grepとsedを使った特定行の値の置換方法
Contents
grepで特定の行を指定して、その行の値を置換する
Linuxで特定のID等をgrepで検索し、その結果の値を置換したい場合、は、grep と sed コマンドを使用することで簡単に実現できます。
例として、下記のようなファイルがあるとします。
このファイルに対し、特定のID(例えば test4)を検索し、その行に含まれる 23445903 を 99999999 に置換する方法を説明します。
$ cat data.txt test1 23458902 4134584 100 test2 23453906 4234584 300 test3 23434905 4135684 400 test4 23445903 4134574 500 test5 23458452 4134260 600
grepで検索
まず、対象の行を grep で検索すると以下の結果になります
$ grep "test4" data.txt # 出力結果 test4 23445903 4134574 500
sedを使った置換
sed コマンドを使用し、該当の行に含まれる 23445903 を 99999999 に置き換えます。
$ sed -i '/test4/s/23445903/99999999/' data.txt
【コマンドの詳細】
- /test4/ → test4 を含む行を検索
- s/23445903/99999999/ → その行の 23445903 を 99999999 に置換
- -i → ファイルを直接編集(-i.bak を使うと data.txt.bak というバックアップを作成)
変更内容を確認
$ cat data.txt test1 23458902 4134584 100 test2 23453906 4234584 300 test3 23434905 4135684 400 test4 99999999 4134574 500 test5 23458452 4134260 600
変更を確認するだけでファイルを編集しない方法
置換結果を確認するだけで、ファイルを直接編集しない場合は、以下のように sed を使います。
$ sed '/test4/s/23445903/99999999/' data.txt
ディスカッション
コメント一覧
まだ、コメントがありません