shell脚本中怎么把文件中每一行最后一字符串替换掉我想要的格式

例如我有一个test.sql文件

 geoadd key 24.9830, 106.2090, '昌平霍营村'
geoadd key 24.9830, 106.2091, '昌平霍营村'
geoadd key 24.9830, 106.2092, '昌平霍营村'
geoadd key 24.9830, 106.2093, '昌平霍营村'

替换成下面的这种格式,让最后一个字符串按照需要格式自增

 geoadd key 24.9830, 106.2090, '昌平霍营村$1'
geoadd key 24.9830, 106.2091, '昌平霍营村$2'
geoadd key 24.9830, 106.2092, '昌平霍营村$3'
geoadd key 24.9830, 106.2093, '昌平霍营村$4'

实在是想不出来改怎么实现这个功能了,只有2C币了,还请大神能够指点一二。谢谢了!

用awk替换,假设你的文本是存在test.txt,用-v传入一个变量seq,然后匹配关键字,匹配到后seq+1,最后把输出重定向到文件就可以了

 ~$ awk -v seq=1 '{sub(/昌平霍营村/,"昌平霍营村$"seq++)} {print $0}' test.txt 
geoadd key 24.9830, 106.2090, '昌平霍营村$1'
geoadd key 24.9830, 106.2091, '昌平霍营村$2'
geoadd key 24.9830, 106.2092, '昌平霍营村$3'
geoadd key 24.9830, 106.2093, '昌平霍营村$4'

如果你只是按照最后一个字段,进行归类并+1操作的话,用如下的awk命令。

~$awk '{sub(/'\''$/,"$"a[$(NF)]++"'\''")} {print $0}' test.sql
geoadd key 24.9830, 106.2090, '昌平霍营村$0'
geoadd key 24.9283, 106.2938, '海定西三旗村$0'
geoadd key 24.9830, 106.2091, '昌平霍营村$1'
geoadd key 24.9830, 106.2092, '昌平霍营村$2'
geoadd key 24.9283, 106.2938, '海定西三旗村$1'
geoadd key 24.9830, 106.2093, '昌平霍营村$3'
geoadd key 24.9283, 106.2938, '海定西三旗村$2'

好奇怪我周末试的是没有问题,但是今天试了下发现改不了了,数据格式一样的,就是数据内容变了