«

sed的-i 模式提示bad flag in substitute command 或者 invalid command code

时间:2022-7-8 21:41     作者:admin     分类: 技术文章


错误提示

在使用 Unix 系统的 sed 的 -i 选项直接修改文件的时候出现 invalid command code 或者 bad flag in substitute command 时,该如何解决呢?比如下命令:

sed -i 's/\/fonts/../fonts/' /Users/sergeybasharov/WebstormProjects/snap/compiled/Content/stylesheets/style.css

错误提示:sed: 1: "/Users/sergeybasharov/W ...": bad flag in substitute command: 'b'

或者

sed -i 's/xxx_test/test/g' uxx_123_345.txt

错误提示:sed: 1: "uxx_123_345.txt": invalid command code u
这是什么原因导致的或者该如何解决呢?

原因以及解决办法

我所遇到和了解到的是因为有两种情况,第一个是替换包含旧的字符串,第二个是替换里包含了分隔符.
解决办法也是更换分隔符,比如将 sed -i 's/aaa/ccc/g' 这种传统的采用斜杠的分隔符换成其他的,
比如换成 ~ : sed -i 's~aaa~ccc~g' 来解决;
如果是字符串包含的问题可以在 -i 参数后或者替换的语句后加上一个空的 双单引号,比如:
sed -i 's/xxx_test/test/g' uxx_123_345.txt 换成 sed -i '' 's/xxx_test/test/g' uxx_123_345.txt

或者 sed -i 's/xxx_test/test/g' '' uxx_123_345.txt 即可解决问题。

标签: Linux sed

版权所有:Mrxn's Blog
文章标题:sed的-i 模式提示bad flag in substitute command 或者 invalid command code
除非注明,文章均为 Mrxn's Blog 原创,请勿用于任何商业用途,转载请注明作者和出处 Mrxn's Blog

扫描二维码,在手机上阅读