vimで、特殊文字を文字列置換する
業務で、サーバーのログから特定の文字列だけ除去する作業が発生した。
今回削除したい文字列は、バックスラッシュ\ と、タブのセット。
現状1行あたりのログには、バックスラッシュ\ とタブ2つが入っている状況。
実現したいこととしては、下記のように全ての行に対してバックスラッシュ\ と、タブを1個削除したい。
手順
【vimでの文字列置換】
:%s/置換前の文字列/置換後の文字列/c
cオプションをつけることによって、置換するかどうか1回1回聞いてくれる。
全て一斉置換したい場合は、cオプションをつけない。
バックスラッシュ\ とタブのセットを変換前の文字列とすると、うまく置換できそう。
今回のケースを上記に当てはめて考えてみると、
:%s/{{バックスラッシュ/}}{{タブ}}/{{何も入れない}}/c
文字にするとこうなる。
バックスラッシュ\ は、特殊文字となるため、特殊文字を条件にマッチさせたい場合は\
でエスケープが必要になる。
エスケープが必要な特殊文字は、^ $ . * [ ] / ~ \
となる。
vimの:を押すモード内でtabを表示するには、
tab+control で出せます。水色表示されれば成功となります。
以上の点を踏まえると、/
と^I
のセットを削除するには、
:%s/\\^I//c
で削除が可能となる。
## 参考にさせていただいた記事
正規表現の置換で特殊文字をエスケープする方法