Ste*_*eve 5 regex grep sed wildcard string-substitution
我想基于通配符进行替换.例如,只有当"任期"一词出现在"="符号后面时,才将所有"任期"改为"处置".基本上是一个匹配这个的正则表达式=.*tenure
我这样做的sed命令是:
sed 's/=.*tenure/=.*disposition/g' file.txt
Run Code Online (Sandbox Code Playgroud)
但是,如果我将其传递给包含以下内容的文件:
blah blah blah = change "tenure" to "disposition"
Run Code Online (Sandbox Code Playgroud)
我明白了
blah blah blah =.*disposition" to "disposition"
Run Code Online (Sandbox Code Playgroud)
代替:
blah blah blah = change "disposition" to "disposition"
Run Code Online (Sandbox Code Playgroud)
如何进行替换,使正则表达式中的通配符不会成为目标文件的一部分?
您需要使用捕获组来捕获等号和"任期"之间出现的文本.
所以
sed 's/=\(.*\)tenure/=\1disposition/g'
Run Code Online (Sandbox Code Playgroud)
请注意使用\1引用和使用您捕获的组.
所以
echo 'blah blah blah = change "tenure" to "disposition"' | sed 's/=\(.*\)tenure/=\1disposition/g'
Run Code Online (Sandbox Code Playgroud)
我们得到
blah blah blah = change "disposition" to "disposition".
Run Code Online (Sandbox Code Playgroud)
请参阅正则表达式分组.