Это awk
способ.
awk -v RS=\" '/@/' infile.txt
Вышеупомянутое верно, когда вы заключаете поля в кавычки, иначе у вас должен быть RS с несколькими RecordSeperators. как RS='[[:blank:]]*:'
по вашему образцу в вашем комментарии.
Без полных фактических данных этот ответ основан на догадках.
Я предполагаю, что
[]
)и Вы можете опубликовать -обработку своего вывода с помощьюsed
(Изменить :Изменено регулярное выражение, чтобы поймать первую группу в скобках, если их больше.)
grep -ER "stopped" ems_rpt1/SystemOut.log | tail -1 | sed 's/[^[]*\(\[[^]]*\]\).*/\1/'
Примечание. :Вы используете параметр -E
, который означает «Сопоставление с использованием расширенных регулярных выражений». В вашем примере используется только простая строка, поэтому вы можете использовать параметр -F
вместо -E
, что будет означать «Сопоставление с использованием фиксированных строк».