文字列置換や抽出に利用されるsedコマンドですが、今までなんとなく使用していたため調べ直してまとめてみました。
sedコマンドとは
sedとはStream EDitorの略で、入力されたテキストデータを1行ずつ読み込んで指定した処理を適用して出力を行います。主に文字列の置換や抽出に用いられます。
基本的な使い方
echo
コマンドを用いた例が一番わかりやすいです。
$ echo '一郎くんおはようございます。' | sed 's/一郎/二郎/'
二郎くんおはようございます。
このように正規表現を用いて文字列の置換を行うことができます。
また、特定の文字列を空文字に置換するすることにより、文字列の抽出を行うこともできます。
$ echo 'TEL: 0120-000-000' | sed 's/[A-Z :]//g'
0120-000-000
一番基本となる使い方はファイルを指定して処理を行う方法です。
$ cat hoge.txt
abcdefg
$ sed 's/abc/def/' hoge.txt
defdefg
用途別コマンド例
一致する文字列を全て置換
正規表現のg
オプションを用いて一致する文字列を全て置換できます。
$ echo 'abcdefabc' | sed 's/abc/def/g'
defdefdef
複数の処理を行う
-e
オプションを使うと複数条件指定できます。
$ echo abcdefghi | sed -e "s/abc/xxx/" -e "s/ghi/zzz/"
xxxdefzzz
行を削除
d
コマンドを用いて特定の行を削除できます。
$ cat hoge.txt
abcdefg
1234567
aaaaaaa
bbbbbbb
$ sed '1,3d' hoge.txt
bbbbbbb
特定の文字列を含む行を削除する場合
$ sed "/abc/d" hoge.txt
1234567
aaaaaaa
bbbbbbb
ファイルを上書き
-i
オプションを使用すると、ファイルの内容を上書きすることができます。
$ cat hoge.txt
abcdefg
$ sed -i 's/abc/def/' hoge.txt
defdefg
$ cat hoge.txt
defdefg
指定した行だけ表示
-n
オプションを用いて指定した行を表示できます。
$ cat hoge.txt
abc
def
ghi
jkl
$ sed -n 2,4p hoge.txt
def
ghi
jkl
まとめ
sedコマンドの基本的な使い方についてまとめてみました。使用方法やオプションなど忘れてしまった際は是非見返してください。
参考URL