Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sed 在多个文本文件中插入相同的文本文件_Sed_Find - Fatal编程技术网

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' -

我想在几个不同的文件中插入一个文本文件的内容,我们称之为Menu.incl。我知道如何在单个文件上执行此操作,方法是使用sed命令并在目标文件中引入一个标记:

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)