正規表現を使用して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を呼び出していることに注意してください。

ベストアンサー1

おすすめ記事