はじめに
こんにちは!
awkコマンドのおさらい(備忘録)という記事を書きましたが、sedもよく忘れるので、備忘録です。
よく忘れるsedコマンドですが、Linuxコマンドの中でも、かなり代表的なコマンドです。知ってて損はないです。というか、知らないと効率悪いです。
今回は、このsedコマンドについて、基本的な使い方から振り返っていきます。
sedの基本
sedの基本的な構文は以下の通りです。
sed 'コマンド' 入力ファイル
- コマンド: sedに対して行いたい処理を指定します。
- 入力ファイル: 処理対象のテキストファイルを指定します。
sedは、指定されたコマンドに従って入力ファイルを処理し、結果を標準出力に出力します。
よく使うsedコマンド
1. 特定の文字列を置換する
sedの最も基本的な使い方の一つが、文字列の置換です。
例えば、sample.txt
というファイルの中の "apple" を "orange" に置換したい場合は、以下のように記述します。
$ cat sample.txt
apple,100,red
banana,50,yellow
orange,80,orange
$ sed 's/apple/dog/' sample.txt
dog,100,red
banana,50,yellow
orange,80,orange
-
s/apple/dog/
: これがsedのコマンド部分です。s
は置換コマンドで、/
で区切られた最初の文字列 (apple) を2番目の文字列 (dog) に置換します。
2. 行番号を指定して置換する
特定の行だけを置換したい場合は、行番号を指定します。
# 3行目の "banana" を "grape" に置換する
$ sed '2s/banana/grape/' sample.txt
apple,100,red
grape,50,yellow
orange,80,orange
3. 正規表現を使った置換
sedでは、正規表現を使ったより柔軟な置換も可能です。
# 行頭が "a" で始まる行の "red" を "green" に置換する
$ sed '/^a/s/red/green/' sample.txt
apple,100,green
banana,50,yellow
orange,80,orange
4. ファイルを直接編集する
sedは、 -i
オプションを使うことで、入力ファイルを直接編集することもできます。
# sample.txt の "apple" を "strawberry" に置換する (ファイルを直接編集)
$ sed -i '' 's/apple/strawberry/' sample.txt
$ cat sample.txt
strawberry,100,red
banana,50,yellow
orange,80,orange
5. 複数のコマンドをまとめて実行する
sedでは、 ;
を使って複数のコマンドを連結して実行することができます。
# 1行目を削除し、2行目の "banana" を "grape" に置換する
$ sed '1d; 2s/banana/grape/' sample.txt
grape,50,yellow
orange,80,orange
あまり使わないけど便利なsedコマンド
$ cat sample.txt
apple,100,red
banana,50,yellow
orange,80,orange
melon,500,green
1. 特定の行を削除する
# 3行目を削除する
$ sed '3d' sample.txt
apple,100,red
banana,50,yellow
melon,500,green
2. 特定の範囲の行を抽出する
# 2行目から4行目を抽出する
$ sed -n '2,4p' sample.txt
banana,50,yellow
orange,80,orange
melon,500,green
3. 行頭にコメントを追加する
# 各行頭に "#" をつけてコメントアウトする
$ sed 's/^/#/' sample.txt
#apple,100,red
#banana,50,yellow
#orange,80,orange
#melon,500,green
まとめ
今回は、基本的なsedコマンドと便利な使い方までを紹介しました。
sedは、非常に強力なテキスト処理ツールであり、使いこなせるようになれば、Linux環境での作業効率が格段に向上します。
ぜひ、今回の内容を参考に、sedコマンドを活用してください🙂