сценарий sed для изменения запуска и конца параграфа ровным/нечетным способом

Я хочу использовать sed для изменения запуска и конечного шаблона кода с нечетными/ровными случаями в блоке/параграфе, для, например.

Word1
.....
Word1

Word1
.....
Word1

с заменой "word1" в начале с "NewWord1" (нечетные времена, 1,3,5,7..) и заменяющий "word1" в конце с "NewWord2" (даже времена, 2,4,6...)

NewWord1
.....
NewWord2

NewWord1
.....
NewWord2

Я попытался использовать

sed -i -E ':a;N;$!ba;  s/Word1([^Word1]+[Word1|$])/NewWord1\1/g' SampleCode
sed -i -E ':a;N;$!ba;  s/Word1([^Word1])/NewWord2\1/g' SampleCode

И это работает как очарование

Взятая справка от команды для нечетного происшествия

0
задан 30 January 2020 в 17:48

1 ответ

Если Вы работаете с абзацами, то Awk или Perl, вероятно, более просты

Напр. с GNU Awk:

$ gawk -vRS= '
    BEGIN{OFS=FS="\n"} 
    {sub(/Word1/,"NewWord1",$1); sub(/Word1/,"NewWord2",$NF)}
    {printf $0 RT}
' SampleCode
NewWord1
.....
NewWord2

NewWord1
.....
NewWord2
0
ответ дан 30 January 2020 в 23:25

Другие вопросы по тегам:

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