Bash: найти соответствующий текст и заменить следующую строку

Оповещение: я уже сталкивался с подобными вопросами на стеке. Я много искал. Следовали решения, но не смогли решить проблему.

У меня есть переменная $NEW_FILE, которая дает значение ничего (./location/file1)], когда вы делаете echo $NEW_FILE

У меня есть файл test1.txt, который содержит:

Привет, мир!

Это не работает

Я ничего не знаю о Сед и awk

Теперь я хочу найти слово-работающий и добавить новую строку после того, как она содержится в $NEW_FILE. Поэтому желаемый результат будет:

Привет, мир!

Это не работает

ничего (./ местоположение / file1)]

Я ничего не знаю о Сед и awk

Как мне добиться этого в bash, используя sed или awk?

Вот что я попробовал: awk '/working/ { print; печатать $NEW_FILE; следующий}1' test1.txt

Это дает вывод:

Привет, мир!

Это не работает

$ new_file

Я ничего не знаю о Сед и awk

Может кто-то помочь мне с этим?

Я думаю, что мы также должны рассмотреть прямую и обратную косую черту в переменной NEW_FILE.

1 ответ

Решение

Ваш NEW_FILE вероятно, bash-переменная и, следовательно, не переменная в awk. Итак, пусть bash сделает расширение:

awk '/working/ { print; print "'$NEW_FILE'"; next}1' test1.txt

или передать / установить переменную из командной строки:

awk -v NEW_FILE="$NEW_FILE" '/working/ { print; print NEW_FILE; next}1' test1.txt
Другие вопросы по тегам