大きなsqlファイルがあり、テーブル名を `feedback`から` comments`に変更したいのですが、行にそのテキストが含まれている場合にWordフィードバックを置き換えたくないので、引用符で囲まれていますが、vimで見つけることができません。私は使っています
:s/`feedback`/`comments`/
それを行う方法はありますか?たぶんvimはこれに最適なオプションではありませんか?
vim
は確かにこれを行うことができますが、私の最初の考えは sed
またはPerl
を使用することです。 sed
の使用:
sed -i.bak 's/`feedback`/`comments`/g' path/to/file
-i
フラグは、sed
に書き込む代わりに、stdout
が指定されたファイルで操作を実行するようにします(-isuffix
はバックアップコピーを作成しますpath/to/filesuffix
)。
Vimで試してください:
:%s/`feedback`/`comments`/gc
これは期待どおりに動作するはずです
Vi/vimのワンライナーは次のとおりです(ex -s
を使用して、全画面エディターを開いてフラッシュが短くなるのを避けます)。
ex -s -c 'w %~ | %s/`feedback`/`comments`/g' -c 'x' <file>
説明:
w %~
は、ファイルのコピーに~
サフィックスを付けて保存します。これは、何かを台無しにした場合のバックアップとして便利です。|
はコマンド区切り記号です。%
は、「すべての行でこのアクションを実行する」ことを意味します。s/`feedback`/`comments`
は、おそらく既にご存知のとおり、「現在の行の正規表現`feedback`
に一致するテキストを`comments`
に置き換える」ことを意味します。g
は「グローバル」を意味します。つまり、行の最初の置換の後に停止しません。x
はwq
の省略形です。つまり、ファイルを書き込んで終了することを意味します。それ以外の場合は、一致するものがない場合にハングするため、個別にする必要があります。