以下works in Javascript作为搭配:匹配字忽略额外字符同一个词在sed
[^\$]fileref.*
然而,在sed正则表达式不匹配任何东西。我想在忽略变量标识符的情况下替换bash文件中的变量引用。前提是我有一个默认的占位符文件,需要使用sed -i从shell脚本更新。我无法找到为什么sed对此表达式有问题的原因。
桑达试验例:
echo -e 'fileref=old\n./executable $fileref' | sed 's/[^\$]fileref.*/fileref=replaced/g'
从GNU输出的sed(Ubuntu或者CENTOS),其中没有发现匹配:
fileref=old
./executable $fileref
希望的输出:
fileref=replaced
./executable $fileref
sed逐行工作,“fileref”之前没有字符。如果你想匹配一行的开始,使用'^'锚点。顺便说一句,你不需要在字符类中转义'$'。 –