используйте sed для выполнения сценария оболочки, если поиск не удался.

Вы правы, этот или подобные вопросы задавались здесь бесчисленное количество раз. Как далеко

sed '/abstract.*{/ {:L; /}/{d; b;}; N; bL; }' file

понял? После сопоставления abstractон -if necassry -повторяется до тех пор, пока не будет найден }.

РЕДАКТИРОВАТЬ:Разрешение измененного запроса:

sed '/abstract.*{/ {:L; /},$/{d; b;}; N; bL; }' file
0
16.03.2020, 03:02
1 ответ

С GNU sedи несколькими строками ввода:

sed -n '/pattern/{h;s//replacement/;};p;${g;//!q1;}' file
  • В строках, содержащихpattern:
    • Добавить строку в буфер хранения
    • Выполнить замену
  • печатать каждую строку
  • При достижении последней строки($):
    • получить буфер хранения
    • Если пространство шаблонов не содержит pattern, выйдите с кодом выхода1
  • Пустые регулярные выражения //используют последний использованный шаблон регулярного выражения

Альтернатива –awk:

awk 'END{exit !repl} /pattern/{repl++; sub(/pattern/,"replacement")} 1' file
  • Если строка содержит pattern, переменная replувеличивается и производится замена
  • В конце выйти с logical notпеременной (, если replравно нулю, выйти со статусом1)

Альтернатива – grepввод заранее, например.:

if grep -q 'pattern' file; then
    # input contains pattern - do sed replacement
    sed 's/pattern/replacement/' file
else
    : input does not contain pattern - execute shell script
fi
2
28.04.2021, 23:20

Теги

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