Linux下如何递归批量移除文件内空<noscript>标签内容?
批量移除指定格式的
一、直接移除空的跨行
如果要直接删除连续两行的空标签:
<noscript> </noscript>
可以用find结合sed递归处理目标目录下的所有文件,命令如下:
find /你的目标目录 -type f -name "*.html" -exec sed -i '/^<noscript>$/{N;/^\n<\/noscript>$/d}' {} +
- 替换
/你的目标目录为实际文件夹路径,*.html可根据需要修改为对应文件后缀(比如*.txt) - 逻辑:找到单独一行的
<noscript>,读取下一行,若下一行是单独的</noscript>,则删除这两行
二、处理添加特定内容后的标签(含跨行/同行两种情况)
如果你已经在标签间添加了REMOVE-ABOVE-AND-BELOW,需要同时处理跨行和同行的格式:
1. 处理跨行格式
<noscript> REMOVE-ABOVE-AND-BELOW </noscript>
2. 处理同行格式
<noscript>REMOVE-ABOVE-AND-BELOW</noscript>
可以用一条合并命令递归处理:
find /你的目标目录 -type f -name "*.html" -exec sed -i -e '/^<noscript>$/{N;/REMOVE-ABOVE-AND-BELOW\n<\/noscript>$/d}' -e '/<noscript>REMOVE-ABOVE-AND-BELOW<\/noscript>/d' {} +
注意事项
- Mac系统下
sed的-i参数需要加空字符串,写成sed -i '' -e '...' - 批量操作前建议先备份文件,或找单个测试文件验证命令效果,避免误改
- 如果需要处理所有类型的文本文件,可将
-name "*.html"改为-name "*",但不建议处理未知类型文件,防止损坏二进制文件
内容的提问来源于stack exchange,提问作者A.J
相关产品推荐
相关产品推荐

