我正在编写一个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更改但仅通过控制台但未保存在文件中时。
非常感谢能够帮助我的人。
答案 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' {} \;