LoginSignup
0
0

More than 3 years have passed since last update.

vimのsedで置換前の文字列を用いて置換する

Last updated at Posted at 2020-08-01

概要

vim,sedで置換前の文字列を使って置換したいときがあります(要するに追記)
解説しているサイトが見つかりづらかったので、備忘録としてまとめておきます

※追記08/03

単に置換対象の文字列を利用して置換したい場合は、以下で可能とのこと
s/old/new&/
old → newold

やり方

例えばvimでsedを使って"old"を"new"に置換するときは以下のようにします
(%:ファイル全体が対象,g:該当部分全てが置換対象,C:置換対象に対して逐一確認をする)

:%s/old/new/gc
old → new

これを、置換前の文字列"old"を消さずに追記したいときは以下のようにします

:$s/\(old\)/new\1/gc
old → newold
\( \)で囲まれた文字列は変数として格納され、"\+数字" で参照できます(\1~\9まである模様)

また、正規表現と組み合わせると

before.txt
a b c d e f g

:$s/\([a-z]\)/\11/gc

after.txt
a1 b1 c1 d1 e1 f1 g1

([a-z]:小文字のアルファベット一文字)
上記のように正規表現で検索した文字・文字列を逐次格納できるので使い方の幅が広がります

0
0
3

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
0
0