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