Можно использовать awk
:
awk '/\.SUBCKT C032_THS_COMPARATOR/{p=1};p;/\.ENDS/{p=0}' file
Объяснение
.SUBCKT C032_THS_COMPARATOR
, устанавливаем p = 1
. .ENDS
, устанавливаем p = 0
. p
мы можем определить, находится ли текущая позиция внутри или вне диапазона, Если in, то p
равно 1
, что означает true в булевом контексте, заставляя awk
по умолчанию распечатать всю строку ввода. Если p
равно 0
, что означает false в булевом контексте, awk
ничего не делает. or sed
:
sed -e '/\.SUBCKT C032_THS_COMPARATOR/,/\.ENDs/!d' file
$ for i in /home/scrript/*; do sed -i 's/kill -PIPE $PID/[[ $KILL_STATUS = YES ]] \&\& kill -PIPE $PID/' "$i"; done
for i in /home/scrript/*; do FOO; done
:повторить для всех файлов в /home/scrript
. Н.Б. в зависимости от конфигурации вашей оболочки это может пропустить точечные файлы. sed -i 's/kill -PIPE $PID/[[ $KILL_STATUS = YES ]] \&\& kill -PIPE $PID/' "$i"
:для каждого файла("$i"
)замените «в -месте» (sed -i
), заменив kill -PIPE $PID
на [[ $KILL_STATUS = YES ]] \&\& kill -PIPE $PID
. (Н.Б. вам нужно избежать &
, так как в противном случае они имеют особое значение.