sed
是否可以将捕获组通过管道传递到另一个程序,从而使正则表达式的RHS中的\1
等于该程序的输出?
例如,运行
sed 's/lorem ipsum \(foobar\)/\1/g' file.txt
将通过另一个程序(例如,tr 'o' 'a'
)通过管道“ foobar”使\1
成为“ {faabar”,sed
将“ lorem ipsum foobar”替换为“ lorem ipsum faabar” ?
这只是一个简单的示例。我知道我可以不用使用tr
就可以将“ foobar”转换为“ faabar”。
答案 0 :(得分:0)
使用执行选项:
e
此命令允许将来自Shell命令的输入通过管道传递到模式空间。如果进行了替换,则执行在模式空间中找到的命令,并用其输出替换模式空间。尾随换行符被禁止;如果要执行的命令包含NUL字符,则结果不确定。这是GNU sed扩展。