我运行以下代码
sed 's/\([^ ]+\) your \([^ ]+\)/ \2\1er/' < fail
Run Code Online (Sandbox Code Playgroud)
文件失败了
fail your test
Run Code Online (Sandbox Code Playgroud)
上面的命令给了我
fail your test
Run Code Online (Sandbox Code Playgroud)
虽然它应该给"testfailer".
第二个和第一个全球\2\1应该在"呃"这个词的开头.这表明问题可能出在搜索部分的正则表达式中.但是,它们似乎对我来说是正确的.
你看到代码中有任何错误吗?
普通或花园品种sed正则表达不理解+.是的,我知道,那是多么愚蠢.所以这是命令行的等效工作版本:
sed 's/\([^ ][^ ]*\) your \([^ ][^ ]*\)/ \2\1er/' < fail
Run Code Online (Sandbox Code Playgroud)
也适用于请求扩展正则表达式,在这种情况下你抛弃parens上的反斜杠:
sed -r 's/([^ ]+) your ([^ ]+)/ \2\1er/' < fail
Run Code Online (Sandbox Code Playgroud)