一直在查看SED文档但需要一个指向正确方向的小指针
我想要批量修改200个文件。 来源是html文件。 需要为更改创建新文件。
想要删除每个文件的第一部分直到第一个标记(这是20行左右,但可能略有不同)。 然后将源文件的内容(对于所有文件都相同)插入到从第1行开始的新目标文件中,大约30行。要插入的行数与删除的行数不匹配。
希望你能提供帮助。
保罗答案 0 :(得分:2)
这当然可以用sed(1)完成,但我可能会使用vanilla编辑器编辑(1)。
$ cat > bigfix.sh
for i in "$@"; do
ed "$i" << \eof
1,/<tag>/-1d
0r otherfile.html
w
q
eof
done
$ sh bigfix.sh file*.html
此shell脚本接受参数并在每个arg上运行ed(1)。它删除从第一行开始的行,并在具有<tag>
的行之前的行结束。然后它将otherfile.html
置于顶部并写出结果。
答案 1 :(得分:0)
对于单个文件:
sed -e '1,/tag/{/tag/r insertfile' -e ';d}' inputfile > outputfile
对于许多文件:
find . -name 'criterion*.ext' -type f -exec sh -c 'sed -e "1,/tag/{/tag/r insertfile" -e ';d}" "{}" > "{}.new"' \;
修改强>
修复find
命令以使用sh
,因为重定向。请注意先前版本引用的更改。