Я хочу использовать 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
И это работает как очарование
Взятая справка от команды для нечетного происшествия
Если Вы работаете с абзацами, то 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