更换文本中第二次出现的字符串内容

  • 需求: 更换文本中第二次出现的字符串内容
文本内容格式如下
aaaa
bbbb
aaaa
dddd
aaaa
eeee

只更换第二次出的aaaa(也就是本例中的第三行内容)为fffffff,其它内容保持不变
  1. 使用数组计数,加判断
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
  1. 使用变量计数
awk '$0=="aaaa"{if(++c==2)$0="fffffff"}1' file
  1. 使用变量计数,利用sub替换
awk '$0=="aaaa"{c++}c==2&&$0=="aaaa"{sub(/.*/,"fffffff")}1' file
posted @ 2017-08-18 15:13  陈浩然201  阅读(780)  评论(0编辑  收藏  举报