Поиск по первому шаблону и поиск по второму шаблону, а затем вставка новой строки над вторым шаблоном - PullRequest
0 голосов
/ 27 сентября 2018

Я застрял с последующей обработкой текста в файле, например, -> Поиск первого шаблона, затем поиск второго шаблона и вставка новой строки над вторым шаблоном.

Пример файла:

some text 1
First-search-text some other text
some text 2
some text 3
Second-search-text

Желаемый вывод для замены в файле:

some text 1
First-search-text some other text
some text 2
some text 3
New line to be inserted
Second-search-text

любые указатели будут очень полезны с awk или sed.

Ответы [ 4 ]

0 голосов
/ 27 сентября 2018

Это может работать у вас (GNU sed):

sed '/^First/,/^Second/!b;/^Second/i New line to be inserted' file
0 голосов
/ 27 сентября 2018

Использование

ed file <<'END_OF_COMMANDS'
/First-search-text/
/Second-search-text/
i
New line to be inserted
.
wq
END_OF_COMMANDS
0 голосов
/ 27 сентября 2018

Вставить перед каждым вторым матчем после первого матча:

perl -pe'print "New line\n" if $f && /^Second-search-text/; $f||=/^First-search-text/'

Вставить перед первым вторым матчем после каждого первого матча:

perl -pe'print "New line\n" if (/^First-search-text/../^Second-search-text/) =~ /E0/'

Указаниефайл для обработки в Perl однострочный

0 голосов
/ 27 сентября 2018

Установите флаг в первом совпадении, затем найдите второй матч с установленным флагом:

 awk '/First-search-text/{f=1}f&&/Second-search-text/{print "New line to be inserted"}1' file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...