sias1991
mt172970621
采纳率20.3%
2017-07-21 15:19 阅读 5.2k

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

2

例如我有一个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币了,还请大神能够指点一二。谢谢了!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • 已采纳
    dead911 呆的久 2017-07-22 04:35

    用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'
    
    
    点赞 评论 复制链接分享
  • dead911 呆的久 2017-07-23 01:15

    如果你只是按照最后一个字段,进行归类并+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'
    
    
    点赞 1 评论 复制链接分享
  • sias1991 mt172970621 2017-07-24 02:13

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

    点赞 评论 复制链接分享

相关推荐