Используйте sed / cat для добавления текста из 1 файла после сопоставленного шаблона в нескольких файлах - PullRequest
0 голосов
/ 13 апреля 2019

Мне нужно добавить текст из 1 файла в несколько файлов между 2 тегами.все файлы имеют одинаковое расширение .sh, но разные имена и все в подкаталогах.

Я попытался изменить это, но он работает только для поиска и замены:

file=$(cat file1.txt)
replace="s/end=date +%s/$file/g";
find . -type f -name '*.sh' -print0 | xargs -0 sed -i "$replace" 

file1.txt

some text here
some text here
some text here
some text here
some text here

окончательный вывод и содержимое файла file1.txt добавлено какновая строка ниже конца = дата +% s для всех файлов .sh

end=date +%s
some text here
some text here
some text here
some text here
some text here

1 Ответ

0 голосов
/ 13 апреля 2019

попробуйте gnu sed на bash shell, протестируйте его без опции -i;

sed -E '/end=date\s+\+%s/r file1.txt' *.sh

после тестирования добавьте опцию -i для реального редактирования, например. sed -Ei ....
для рекурсивного поиска файлов в подпрограммах используйте find, и найденные файлы отправляются в sed
find ~ + -iname '* .sh' -exec sed -E '/ end = date \ s ++% s / r file1.txt' '{}' +

...