更换文本中第二次出现的字符串内容
- 需求: 更换文本中第二次出现的字符串内容
文本内容格式如下
aaaa
bbbb
aaaa
dddd
aaaa
eeee
只更换第二次出的aaaa(也就是本例中的第三行内容)为fffffff,其它内容保持不变
- 使用数组计数,加判断
awk '$0=="aaaa"{a[$1]++;if(a[$1]==2){print "fffffff"}else{print}}$0!="aaaa"{print}' file
aaaa
bbbb
fffffff
dddd
aaaa
eeee
awk '{a[$1]++;if(a["aaaa"]==2&&$0=="aaaa"){print "fffffff"}else{print}}' file
awk '$0=="aaaa"&&++a[$0]==2{$0="fffffff"}1' file
- 使用变量计数
awk '$0=="aaaa"{if(++c==2)$0="fffffff"}1' file
- 使用变量计数,利用sub替换
awk '$0=="aaaa"{c++}c==2&&$0=="aaaa"{sub(/.*/,"fffffff")}1' file
"世界上只有一种真正的英雄主义,就是认清了生活的真相后,还依然执着地热爱它。"
——罗曼·罗兰