以下works in Javascript匹配:
name: Broadcaster
main: me.Orion31.broadcaster.Main
version: 1.0
commands:
broadcast:
description: Broadcast a message to the whole server!
usage: /broadcast <message>
bcset:
description: Change the properties of the broadcaster.
usage: /bcset tag,color <new value>
然而,在sed中,正则表达式与任何东西都不匹配。我想在忽略变量标识符的同时替换bash文件中的变量引用。前提是我有一个默认的占位符文件,需要使用sed -i从shell脚本更新。我找不到为什么sed出现这个表达式问题的原因。
Sed测试示例:
[^\$]fileref.*
未找到匹配项的gnu sed(ubuntu或centOS)的输出:
echo -e 'fileref=old\n./executable $fileref' | sed 's/[^\$]fileref.*/fileref=replaced/g'
期望的输出:
fileref=old
./executable $fileref
答案 0 :(得分:2)
“$
之前的fileref
可以这样表达:”不是$
或没有字符的字符所有在fileref
“
echo -e 'fileref=old\n./executable $fileref' | sed 's/\([^$]\|^\)fileref.*/\1fileref=replaced/g'
与Javascript相同:
var result = str.replace(/([^$]|^)fileref.*/, '$1fileref=replaced');
答案 1 :(得分:0)
echo -e 'fileref=old\n./executable $fileref' | sed 's/^fileref.*$/fileref=replaced/g'
给出以下
fileref=replaced
./executable $fileref
通过输入[^ \ $],你要说的是在行的开头搜索$