- 使用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/B00000
→wav
,为了避免分割符与替换字符串重复,可以选用其他分割符,例如@,#等$ sed -i 's@wav/dev/third_party/B00000@wav@' 1.txt