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
    

你可能感兴趣的:(工具,linux,bash)