Как добавить текст в начале определенных строк, используя sed? - PullRequest
1 голос
/ 20 сентября 2019

Я хочу добавить текст в начале каждой строки ниже символа.Использование sed в терминале.

Например.Если у меня есть textA.txt

@PL123
abcd
+
linewithmoretext
@PL456
efgh
+
2ndlinewithmoretext

и т. Д., И с той же структурой будет следовать еще много строк.

И я хочу, чтобы мой вывод был: textB.txt

@PL123
PREFIXabcd
+
linewithmoretext
@PL456
PREFIXefgh
+
2ndlinewithmoretext

Я пробовал

sed 's/^/PREFIX/' textA.txt > textB.txt 

, но это вставляет PREFIX в начале ВСЕХ строк.Но я хочу, чтобы это было более конкретным, говоря, что я хочу PREFIX в начале каждой строки, которая находится ниже строки, содержащей @PL.Кто-нибудь может мне помочь?Я был бы очень благодарен.

Ответы [ 3 ]

2 голосов
/ 20 сентября 2019

Просто используйте awk:

$ awk '{print (prev ~ /^@PL/ ? "PREFIX" : "") $0; prev=$0}' file
@PL123
PREFIXabcd
+
linewithmoretext
@PL456
PREFIXefgh
+
2ndlinewithmoretext
2 голосов
/ 20 сентября 2019

При обнаружении @PL читайте следующую строку и добавляйте к ней PREFIX.

sed '/@PL/{n;s/^/PREFIX/}' file
0 голосов
/ 20 сентября 2019

Я попробовал

sed '/@PL/aline' 

, а затем

perl -pi -e 's[line\n][PREFIX]g' 

, и это тоже сработало.Но ваши коды проще, поэтому я буду их использовать.

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