Если это ваш входной файл, и это спецификация, вы можете сделать:
sed -n '3,$p;$a$WHITE*("10")$' INPUTFILE
Но я предполагаю, что это не так, поэтому вы можете перефразировать ваш вопрос и / или дать еще несколько деталей.
Более конкретное решение с помощью sed:
sed '/^\$WHITE\*("5")\$$/,/^$/d;/\$HRULE\$/ a$WHITE*("10")$' INPUTFILE
(Ищет строку $WHITE*("5")$
и удаляет ее до (включая!) Следующей пустой строки. Затем ищет следующую строку $HRULE$
и добавляет строку $WHITE*("10")$
.
awk
решение:
awk '/\$WHITE\*\("5"\)\$/ { getline ; next }
/\$WHITE\*\("20"\)\$/ { print ;
getline ;
if ($0 ~ /\$HRULE\$/) { print ;
print "$WHITE*(\"10\")$" ;
}
else { print }
}
1 ' INPUTFILE
Это читает файл и печатает каждую строку - вот почему там есть 1
, кроме случаев, когда он находит шаблон $WHITE*("5")
, который отбрасывает его, читает следующую строку и тоже отбрасывает. если он находит, $WHITE*("20")
печатает его. Читает следующую строку, и если она $HRULE$
, то печатает ее и добавленную строку $WHITE*("10")
. Остальное просто печатает строку.
НТН