使用 sed/cat 在多个文件中的匹配模式后添加 1 个文件中的文本

Use sed/cat to add text from 1 file after matched pattern in multiple files

我需要将 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 的最终输出和内容在 end=date +%s 下面作为新行添加到所有 .sh 文件

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

在 bash shell 上尝试 gnu sed,在没有 -i 选项的情况下进行测试;

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

测试后添加 -i 选项到真正的编辑,例如sed -Ei.....
要递归搜索 subs 中的文件,请使用 find 这样做,找到的文件将发送到 sed
找到 ~+ -iname '*.sh' -exec sed -E '/end=date\s++%s/r file1.txt' '{}' +