web-dev-qa-db-ja.com

vimの引用符内のテキストを置き換えます

大きなsqlファイルがあり、テーブル名を `feedback`から` comments`に変更したいのですが、行にそのテキストが含まれている場合にWordフィードバックを置き換えたくないので、引用符で囲まれていますが、vimで見つけることができません。私は使っています

:s/`feedback`/`comments`/

それを行う方法はありますか?たぶんvimはこれに最適なオプションではありませんか?

4
SERPRO

vimは確かにこれを行うことができますが、私の最初の考えは sed またはPerlを使用することです。 sedの使用:

sed -i.bak 's/`feedback`/`comments`/g' path/to/file

-iフラグは、sedに書き込む代わりに、stdoutが指定されたファイルで操作を実行するようにします(-isuffixはバックアップコピーを作成しますpath/to/filesuffix)。

6
muru

Vimで試してください:

:%s/`feedback`/`comments`/gc

これは期待どおりに動作するはずです

5
Ramya A

Vi/vimのワンライナーは次のとおりです(ex -sを使用して、全画面エディターを開いてフラッシュが短くなるのを避けます)。

ex -s -c 'w %~ | %s/`feedback`/`comments`/g' -c 'x' <file>

説明:

  • w %~は、ファイルのコピーに~サフィックスを付けて保存します。これは、何かを台無しにした場合のバックアップとして便利です。
  • |はコマンド区切り記号です。
  • %は、「すべての行でこのアクションを実行する」ことを意味します。
  • s/`feedback`/`comments`は、おそらく既にご存知のとおり、「現在の行の正規表現`feedback`に一致するテキストを`comments`に置き換える」ことを意味します。
  • gは「グローバル」を意味します。つまり、行の最初の置換の後に停止しません。
  • xwqの省略形です。つまり、ファイルを書き込んで終了することを意味します。それ以外の場合は、一致するものがない場合にハングするため、個別にする必要があります。
2
nyuszika7h