Печатать текст строки после первого вхождения шаблона, исключая шаблон (OSX)

Вы можете установить coreutils, который содержит дату GNU:

brew install coreutils

, затем

$ gdate -d "2020-01-17T06:41:48.000Z" +%s%3N
1579243308000
0
21.02.2020, 12:25
2 ответа

Попробуйте это,

sed -n '/word/{n;p;q}' file
  • n -> Чтение/добавление следующей строки ввода в пространство шаблонов.
  • p -> Печать текущего пространства шаблона.
  • q -> Немедленно выйти из сценария sed без дальнейшей обработки ввода, только для первого вхождения...
2
28.04.2021, 23:22

Предполагая, что вы обрабатываете только один файл, И шаблон может встречаться только один раз в соответствующей строке , следующее будет работать:

awk -F"word" 'NF>1 {print $2; exit}' file

Это будет использовать шаблон «слово» в качестве разделителя полей и проверять, существует ли более одного такого «поля». Если это так, напечатайте второе поле, равное тексту после word, и остановите выполнение.

Если вы хотите обработать более одного файла, вы можете использовать

awk -F"word" 'NF>1 {print $2; nextfile}' file1 file2...

, но это будет менее переносимо (не работает на mawk, например. ).

0
28.04.2021, 23:22

Теги

Похожие вопросы