Linuxコマンド「sed」


与えられた文字列の置換えをしてくれるコマンドです。ちなみに、sedStream EDitor の略とのことだそうです。

🤔 利用例

置換対象の文字列を表示

sed -n 's/AAA/BBB/p' ファイル名

置換対象で大文字・小文字を無視

sed 's/AAA/BBB/i' ファイル名

文字列の置き換え

-e スクリプトは複数書けます。
下は、すべての AAA => BBB, CCC => DDD に置換えた結果を出力する場合です。

sed -e 's/AAA/BBB/g' -e 's/CCC/DDD/g' ファイル名

置換えた結果でファイルを上書き

-i でファイルの上書きを行います。

sed -i -e 's/AAA/BBB/g' ファイル名

行の削除

d を条件の最後につけると削除になります。

sed -e '1d' file # 1行目を消去
sed -e '1,4d' file # 1-4行目を消去

80文字ずつ改行する

sed 's/.\{80\}/&\n/g' ファイル名

😎 よく利用するオプション

オプション 意味
-eスクリプト 指定したスクリプトで変換を行い、結果を出力
-pスクリプト 指定したスクリプトで変換された行だけを出力

🍣 応用例

特定の文字列が含まれる行番号を返す

ある特定の文字列が含まれる行番号を返すコマンド。grep との組み合わせです。

grep -e AAA -n querylog.txt | sed -e 's/:.*//g'

ファイルの先頭の空行を除去

ファイルの先頭の空の行の削除するのは次のコマンドです。

find . -type f -name '*.rb' -print0 | xargs -0 -n 1 sed -i '' '/./,$!d'

😸 参考リンク

📚 おすすめの書籍