Sed 在多个文本文件中插入相同的文本文件
我想在几个不同的文件中插入一个文本文件的内容,我们称之为Menu.incl。我知道如何在单个文件上执行此操作,方法是使用sed命令并在目标文件中引入一个标记:Sed 在多个文本文件中插入相同的文本文件,sed,find,Sed,Find,我想在几个不同的文件中插入一个文本文件的内容,我们称之为Menu.incl。我知道如何在单个文件上执行此操作,方法是使用sed命令并在目标文件中引入一个标记: sed -e '/the Menu is Here/r Menu.incl' F.html > F_Menu.html 我想保留原始文件,以便将来可能对Menu.incl文件进行修改 如何为html文件集合的每个成员执行此操作?我猜:使用find命令?我尝试使用以下命令获得预期结果: find . -name '*.html' -
sed -e '/the Menu is Here/r Menu.incl' F.html > F_Menu.html
我想保留原始文件,以便将来可能对Menu.incl文件进行修改
如何为html文件集合的每个成员执行此操作?我猜:使用find命令?我尝试使用以下命令获得预期结果:
find . -name '*.html' -exec sed -e '/the Menu is Here/r Menu.incl' '{}' +
但我不知道如何将每个修改后的.html内容保存在一个副本中,即在不破坏原始html文件的情况下
谢谢你的帮助,
Romuald尝试流程替代:
读取f时;做
d=$(目录名“$f”)
b=$(基本名称“$f”)
b=“新的。$b”
sed-e'/菜单在这里/r菜单。包括“$f”>“$d/$b”;
完成<非常感谢。是否可以创建new.F.html而不是F.html.new?@user2997973:只需根据需要更改输出重定向。这不太明显,因为$F包含相对路径,而不仅仅是html文件的名称,因此当我重定向到“new$F”而不是“$F.new”时,我会收到一条错误消息->>新建/测试。html@user2997973:好的。我没有意识到这一点。我已经更新了答案,使用dirname
和basename
分割路径并编辑文件名。谢谢。通过利用find命令的-printf选项,我发现了另一种可能性:whilereadf;do sed-e'/菜单在这里/r菜单。包括“$f”>“新的$f”;完成<
while read f; do
d=$(dirname "$f")
b=$(basename "$f")
b="new.$b"
sed -e '/the Menu is Here/ r Menu.incl' "$f" > "$d/$b";
done < <(find . -type f -iname "*.html" -print)