LoginSignup
3
3

More than 3 years have passed since last update.

vimで、特殊文字を文字列置換する

Last updated at Posted at 2020-06-16

vimで、特殊文字を文字列置換する

業務で、サーバーのログから特定の文字列だけ除去する作業が発生した。
image.png
今回削除したい文字列は、バックスラッシュ\ と、タブのセット。
現状1行あたりのログには、バックスラッシュ\ とタブ2つが入っている状況。
実現したいこととしては、下記のように全ての行に対してバックスラッシュ\ と、タブを1個削除したい。

image.png

手順

【vimでの文字列置換】

:%s/置換前の文字列/置換後の文字列/c

cオプションをつけることによって、置換するかどうか1回1回聞いてくれる。
全て一斉置換したい場合は、cオプションをつけない。

バックスラッシュ\ とタブのセットを変換前の文字列とすると、うまく置換できそう。
今回のケースを上記に当てはめて考えてみると、

:%s/{{バックスラッシュ/}}{{タブ}}/{{何も入れない}}/c

文字にするとこうなる。

image.png

バックスラッシュ\ は、特殊文字となるため、特殊文字を条件にマッチさせたい場合は\でエスケープが必要になる。
エスケープが必要な特殊文字は、^ $ . * [ ] / ~ \となる。

vimの:を押すモード内でtabを表示するには、
tab+control で出せます。水色表示されれば成功となります。

以上の点を踏まえると、/^Iのセットを削除するには、

:%s/\\^I//c

で削除が可能となる。

 参考にさせていただいた記事

正規表現の置換で特殊文字をエスケープする方法

メタ文字の効果を消すエスケープ処理

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3