Как извлечь первое слово, которое следует за строкой? - PullRequest
0 голосов
/ 23 августа 2010

Например, скажем, у меня есть текстовый файл example.txt, который гласит: я люблю собак.Моя любимая собака Джордж, потому что он моя собака.Джордж - хорошая собака.

Теперь, как мне извлечь слово «Джордж», учитывая, что это первое слово, которое следует за «Моя любимая собака»?Например, моя любимая собака - Джордж .....

Есть ли способ надежно извлечь слово "Джордж" независимо от количества пробелов между "Моя любимая собака" и "Джордж"?

Ответы [ 4 ]

1 голос
/ 23 августа 2010

Если у вас не установлен Perl, вы можете использовать sed:

cat example.txt | sed 's/my favourite dog is *\([a-zA-Z]*\) .*/\1/g'
1 голос
/ 23 августа 2010

Чистый Баш:

string='blah blah ! HEAT OF FORMATION 105.14088 93.45997 46.89387 blah blah'
pattern='HEAT OF FORMATION ([^[:blank:]]*)'
[[ $string =~ $pattern ]]
match=${BASH_REMATCH[1]}
0 голосов
/ 24 августа 2010

Если вы пытаетесь найти файл, особенно если у вас большой файл, использование внешних инструментов, таких как sed / awk / perl, быстрее, чем использование чистых циклов bash и манипулирования строками bash.

sed 's/.*HEAT OF FOMATION[ \t]*\(.[^ \t]*\).*/\1/'  file

Манипулирование чистой строкой bash полезно только тогда, когда вы обрабатываете несколько простых строк внутри скрипта.Как манипулирование переменной.

0 голосов
/ 23 августа 2010

Вы можете сделать:

cat example.txt | perl -pe 's/My favorite dog is\s+(\w+).*/\1/g'

выводит Geroge

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...