Regex 匹配单词忽略sed中具有额外字符的相同单词
以下为匹配项:Regex 匹配单词忽略sed中具有额外字符的相同单词,regex,bash,shell,sed,Regex,Bash,Shell,Sed,以下为匹配项: [^\$]fileref.* 但是,在sed中,正则表达式与任何内容都不匹配。我想替换bash文件中的变量引用,同时忽略变量标识符。前提是我有一个默认的占位符文件,需要使用sed-I从shell脚本更新该文件。我找不到sed对此表达式有问题的原因 Sed测试示例: echo -e 'fileref=old\n./executable $fileref' | sed 's/[^\$]fileref.*/fileref=replaced/g' 未找到匹配项的gnu sed(ubu
[^\$]fileref.*
但是,在sed中,正则表达式与任何内容都不匹配。我想替换bash文件中的变量引用,同时忽略变量标识符。前提是我有一个默认的占位符文件,需要使用sed-I从shell脚本更新该文件。我找不到sed对此表达式有问题的原因
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
给出以下内容
fileref=replaced
./executable $fileref
输入[^\$]就是说在行首搜索$
给出以下内容
fileref=replaced
./executable $fileref
通过输入[^\$]您是说在一行的开头搜索$,“在fileref
之前没有$
”可以这样表达:“一个字符不是$
或者在fileref
之前根本没有字符。”
Javascript也是如此:
var result=str.replace(/([^$]|^)fileref.*/,“$1fileref=replaced”);
“在fileref
之前没有$
”可以这样表示:“一个字符不是$
或者在fileref
之前根本没有字符。”
Javascript也是如此:
var result=str.replace(/([^$]|^)fileref.*/,“$1fileref=replaced”);
sed逐行工作,“fileref”前面没有字符。如果要匹配行首,请使用^
锚定。另一方面,您不需要在character类中转义$
。sed逐行工作,在“fileref”之前没有字符。如果要匹配行首,请使用^
锚定。另外,您不需要在字符类中转义$
。
echo -e 'fileref=old\n./executable $fileref' | sed 's/\([^$]\|^\)fileref.*/\1fileref=replaced/g'