如何用单条awk命令替换多模式第n次出现为指定文件对应行
合并后的单条awk命令实现方案
awk 'NR==FNR {a[NR]=$0; next} /home_cool01/{gsub("home_cool01", a[++i2])} /home_cool/ && !/home_cool01/{gsub("home_cool", a[++i1])} 1' 1.txt 0.txt > 3.txt
实现说明
- 优先处理更长的匹配模式
home_cool01,避免短模式home_cool匹配到长模式的前缀导致替换错误 - 用两个独立计数器
i1、i2分别统计home_cool和home_cool01的出现次数,分别按顺序调用1.txt对应行的内容完成替换 - 输出结果直接写入3.txt,和原两条顺序执行命令的输出结果完全一致
内容的提问来源于stack exchange,提问作者7beggars_nnnnm
相关产品推荐
相关产品推荐

