Grep и печать только совпадающего слова и следующих слов

#linux #unix #grep

#linux #unix #grep

Вопрос:

У меня есть текстовый файл, install.history

 Wed June 20 23:16:32 CDT 2014, EndPatch, FW_6.0.0, SUCCESS
  

Мне нужно было бы только распечатать слово, начиная с EndPatch конца, то есть FW_6.0.0, SUCCESS
Приведенная ниже команда, которую я только распечатал EndPatch , так что мне нужно сделать, чтобы она распечатала оставшиеся слова, чтобы мой результат был:

EndPatch, FW_6.0.0, SUCCESS

Вот команда, которая у меня есть:

   grep -oh "EndPatch[[:alpha:]]*" 'install.history'
  

Ответ №1:

Возможно, это проще сделать с sed :

 sed -n 's/.*EndPatch, //p' install.history
  

чтобы получить слово после завершения:

 sed -n 's/.*EndPatch, ([^,]*).*/1/p' install.history
  

или:

 sed -n 's/.*EndPatch, //p' install.history | cut -d, -f
  

Комментарии:

1. Или просто sed 's/.*EndPatch, //g' file

2. Привет @perreal, что, если бы я хотел только следующее слово после «EndPatch», которое является FW_6.0.0?

Ответ №2:

Вы можете попробовать приведенную ниже команду grep, чтобы получить все, начиная с EndPatch последнего,

 grep -oP 'EndPatch, (.*)$' file
  

или

 grep -o 'EndPatch.*$' file
  

Пример:

 $ grep -oP 'EndPatch, (.*)$' file
EndPatch, FW_6.0.0, SUCCESS
$ grep -o 'EndPatch.*$' file
EndPatch, FW_6.0.0, SUCCESS
  

Или

Вы можете попробовать следующую команду, чтобы получить все символы, которые были сразу после EndPatch,

 $ grep -oP 'EndPatch, K(.*)$' file
FW_6.0.0, SUCCESS
  

Комментарии:

1. Привет, Авинаш, я попробовал это — файл $ grep -oP ‘EndPatch, K (. *) $’. И на выходе получается «EndPatch, FW_6.0.0, УСПЕХ» вместо «FW_6.0.0, УСПЕХ». Есть идеи?

2. Его заглавная буква k, а не маленькая буква k.

3. Это моя команда, grep -oP ‘EndPatch, K(.*) $’ /homenfs/sandbox/FU_HOME/install.history >> Output.txt Но он не работает, он не показывает никаких выходных данных.

Ответ №3:

Вам нужно grep -e для сопоставления регулярных выражений

 grep -oh 'install.history' -e "EndPatch[[:alpha:]]*"
  

Ответ №4:

Вы можете использовать awk

 awk -F "EndPatch, " '{print FS$2}' file
EndPatch, FW_6.0.0, SUCCESS