使用bash打开并保存更改

时间:2012-01-09 13:29:21

标签: linux bash console

我正在编写一个bash脚本,可以找到目录中的所有.html个扩展文件,并删除<p> </ p>标记内的所有标记<TXT_accesp> </TXT_accesp>

到目前为止,我有以下代码和示例输出(通过控制台)正常工作:

for i in $(find /home -name *.html); do sed -e '/<TXT_accesp>/,/<\/TXT_accesp>/ s/<p>\(.*\)<\/p>$/\1/g' $i; done

问题是需要在每个被修改的.html文件中保存更改,因为正如我之前所说,当我运行make更改但仅通过控制台但未保存在文件中时。

非常感谢能够帮助我的人。

2 个答案:

答案 0 :(得分:2)

检查sed手册页。有-i标志,表示“就地”编辑(它修改文件而不是将输出发送到终端)。

答案 1 :(得分:1)

您不需要for循环,可以使用-exec find选项来替换。{1}}

find /home -type f -name "*.html" -exec sed -i '/<TXT_accesp>/,/<\/TXT_accesp>/ s/<p>\(.*\)<\/p>$/\1/g' {} \;