sed: -e expression #1, char 8: unterminated `s‘ command

  • 使用sed命令替换指定文本中的字符串时,遇到了sed: -e expression #1, char 8: unterminated `s’ command
  • 网上查了好多,终于找到解决方案,在这里给个总结,希望可以帮助到其他遇到这个问题的小伙伴
问题描述
  • 出现这个问题是因为写的命令丢失了一个符号,具体请看以下示例:
  • 1.txt内容如下:
    1
    2 2
    3
    	
    4
    
  • 原始执行命令
    # 替换1.txt中每一行第一次出现的2替换为88
    $ sed -i 's/2/88' 1.txt
    
  • 运行结果:
    sed: -e expression #1, char 6: unterminated `s' command
    
解决方案
  • 这个其实比较简单,正确命令如下:
    # 区别在于 在 88 后面加了 /
    $ sed -i 's/2/88/' 1.txt
    
另外一个Tips
  • sed中的分割符可以是任意的符号,前提是字符串中不包含这个
  • 例如,如果想要替换文件中的路径为其他字符,例如:
  • 1.txt
    wav/dev/third_party/B00000/DEV_T0000000000/S00000.wav 对我做了
    wav/dev/third_party/B00000/DEV_T0000000001/S00000.wav 重点
    
  • 想要替换上面的wav/dev/third_party/B00000wav,为了避免分割符与替换字符串重复,可以选用其他分割符,例如@,#等
    $ sed -i 's@wav/dev/third_party/B00000@wav@' 1.txt
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值