我正在尝试编写一个sed脚本,找到包含某个模式的每个单词,然后预先包含该模式的所有单词。例如:
foobarbaz barfoobaz barbazfoo barbaz
可能变成:
quxfoobarbaz quxbarfoobaz quxbarbazfoo barbaz
我理解捕获组和backrefrence的基础知识,但我仍然遇到麻烦。具体来说,我无法得到它,以便它分别捕获每个单词。
s/\(.*\)men\(.*\)/ not just the \1men\2, but the \1women\2 and \1children\2 too /
我尝试使用\s
用于许多网站推荐的空白,但sed将\s
视为单独的字符\
和s
答案 0 :(得分:0)
您可以使用非空格字符_remap
,如下所示:
listen tcpProxy 0.0.0.0:7000
mode tcp
balance source
server tcp1 ip1:port check maxconn 10000
server tcp2 ip2:port check maxconn 10000
这将匹配包含\S
的字词。替换字符串sed 's/\S*foo\S*/qux&/g' <<< "foobarbaz barfoobaz barbazfoo barbaz"
将使用foo
添加每个匹配的模式。输出:
qux&
答案 1 :(得分:0)
如果每个单词中没有空格,它可以正常工作。
echo "foobarbaz barfoobaz barbazfoo barbaz" | sed 's/\([^ ]*foo[^ ]*\)/qux\1/g'