Как добавить слова перед строкой на всех скриптах в текущей папке

Можно использовать 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
0
02.12.2018, 16:43
1 ответ
$ 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. (Н.Б. вам нужно избежать &, так как в противном случае они имеют особое значение.
1
28.01.2020, 02:41

Теги

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