使用正则表达式交换 vim 中的文本字符串

使用正则表达式交换 vim 中的文本字符串

我正在处理一个文件,我需要使用 vim 内的正则表达式同时交换“字符串 A”和“字符串 B”的位置。这是代码行示例:

succ_1st=`grep 'resulted in successful answer' $path_tmp/named.stats.tmp | sed '/localhost.localdomain/,/testdns.net/{//!d}' | awk '{ print $1 }' |grep -m1 ''`

我需要它看起来像这样:

succ_1st=`sed '/localhost.localdomain/,/testdns.net/{//!d}' $path_tmp/named.stats.tmp | grep 'resulted in successful answer' | awk '{ print $1 }' | grep -m1 ''`

每行中的 grep 和 sed 语句都是相同的,我只需要交换每个语句的位置。我可以在文件外使用 sed 来完成此操作,但我需要能够在 vim 内使用正则表达式来完成此操作。这是我尝试过的:

%s/grep 'search string'/sed '\/search string\/,\/search string\/{\/\/!d}'/g

这仅替换而不是交换:

我也尝试过:

%s/\v(grep[^$]*)([$][^|]*)[|] (sed[^|]*)/\3\2| \1/

失败并返回:

E486: Pattern not found: \v(grep[^$]*)([$][^|]*)[|] (sed[^|]*)   

请不要将其标记为重复、投票关闭、否决等,因为它不是重复的。所有其他线程都使用 sed 来处理此操作,这不是我想要的。

编辑 - 请注意,我使用指向 /usr/bin/vim 的 Vi 别名调用 Vim。

相关内容