批量处理文件##TestA##块:添加注释与新增行的技术问询
解决方案:批量处理文本块的注释与内容插入
单个文件的sed实现脚本
直接用sed的分支和模式空间处理,这个脚本能精准定位目标块并完成需求:
sed -i.bak '/^##TestA##$/{ N /\n##########$/{ :loop n /^##########$/{ i\##This is the new line we added p b end } s/^/##/ p b loop } } :end' file.txt
脚本逻辑拆解
/^##TestA##$/:精准匹配单独一行的##TestA##N:将下一行(块起始分隔线##########)读入模式空间/\n##########$/:确认下一行是分隔线后,进入块处理流程:loop:定义循环标签,用于遍历块内每一行内容n:读取下一行到模式空间/^##########$/:如果读到块结束的分隔线,先插入指定新行(已添加##注释),再打印分隔线并跳出循环s/^/##/:给当前行开头添加##注释p:打印处理后的行b loop:回到循环继续处理下一行
批量处理数百个文件
如果要处理当前目录下所有.txt文件,用shell循环即可:
for file in *.txt; do sed -i.bak '/^##TestA##$/{ N /\n##########$/{ :loop n /^##########$/{ i\##This is the new line we added p b end } s/^/##/ p b loop } } :end' "$file" done
注意事项
-i.bak:修改文件时自动生成原文件的备份(如file.txt.bak),若无需备份可改用-i,但强烈建议保留备份以防数据丢失- 若目标起始块的分隔线可能包含行尾空格,可将正则调整为
/\n##########\s*$/,适配空白字符
内容的提问来源于stack exchange,提问作者user3285014
相关产品推荐
相关产品推荐

