编写Shell脚本:匹配data3和data4后仅在(blank line3)追加内容
Shell脚本实现指定内容追加功能
以下是满足需求的Shell脚本,使用awk工具处理文本,简洁高效:
BEGIN { in_target_block = 0 } /^#$/ { in_target_block = 0 } /data3 data4/ { in_target_block = 1 } in_target_block == 1 && /^$/ { print print "Line found" in_target_block = 0 next } 1
脚本逻辑说明
- 初始状态下,
in_target_block标记设为0,代表不在目标内容块内 - 遇到以
#开头的行时,重置标记,退出当前可能的目标块 - 匹配到
data3 data4行时,将标记设为1,进入目标内容块 - 当处于目标块内且遇到空行时,先打印原空行,再追加输出“Line found”,随后关闭标记,确保仅在第一个空行(即(blank line3))完成追加
- 最后一行的
1是awk的简写,代表打印所有未被特殊处理的行,保留原文件的其他内容不变
使用方法
将上述脚本保存为append_line.awk,执行以下命令处理目标文件(假设目标文件名为input.txt):
awk -f append_line.awk input.txt > output.txt
处理后的结果会保存到output.txt中,原文件不会被修改。
内容的提问来源于stack exchange,提问作者user5816728
相关产品推荐
相关产品推荐

