更換文字中第二次出現的字串內容

weixin_30639719發表於2020-04-05
  • 需求: 更換文字中第二次出現的字串內容
文字內容格式如下
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

轉載於:https://www.cnblogs.com/irockcode/p/7389797.html

相關文章