Linux 中 sed命令如何替换文本中的最后一个指定的字符串

 

1、rev +  sed实现

[root@PC1 test1]# ls
a.txt
[root@PC1 test1]# cat a.txt                         ## 测试文本
edab34aberabr
dfjhdsfffgggd
abdfabdfereab
dfabereabfabe
[root@PC1 test1]# rev a.txt | sed 's/ba/NM/' | rev    ##将最后一个出现的ab转换为MN
edab34aberMNr
dfjhdsfffgggd
abdfabdfereMN
dfabereabfMNe

 

2、awk + paste 实现

[root@PC1 test1]# ls
a.txt
[root@PC1 test1]# cat a.txt        ## 测试文本
edab34aberabr
dfjhdsfffgggd
abdfabdfereab
dfabereabfabe                      ## awk实现
[root@PC1 test1]# awk 'BEGIN{FS = "ab"; OFS = "ab"} {if(NF == 1) {print $0}}; NF = NF -1' a.txt | paste -d "" - <(awk 'BEGIN{FS  = "ab"} {if(NF != 1) {print "QQ"$NF} else {print ""}}' a.txt )
edab34aberQQr
dfjhdsfffgggd
abdfabdfereQQ
dfabereabfQQe

 。

 

posted @ 2024-02-08 19:24  小鲨鱼2018  阅读(323)  评论(0编辑  收藏  举报