sed の使い方

文字列を置換・行を削除

書き方

sed [-i] [-n] 's/前/後/g' [ファイル]
sed '/パターン/d'

-i でファイルを直接書き換えます。設定ファイルの一部を変えるときに便利。

よく使うオプション

オプション意味
-i結果を出すのではなく、ファイルを直接書き換える(-i.bak で控えも作る)
-np を付けた行だけを出す
-E拡張正規表現を使う
s/前/後/g置き換え(g を付けると 1 行の中の全部。付けないと最初の 1 つだけ)
/パターン/dパターンに合う行を消す

例

$ sed 's/http:/https:/g' links.txt

http: を https: に置き換えた結果を画面に出します。ファイルはまだ変わりません。

$ sed -n '10,20p' /var/log/messages

10 行目から 20 行目だけを出します。

$ sed '/^#/d' /etc/ssh/sshd_config

# で始まるコメントの行を除いて表示します。

$ sudo sed -i.bak 's/^PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config

設定ファイルを直接書き換えます。-i.bak なので、元の中身は sshd_config.bak に残ります。

よくある間違い・注意

  • -i はすぐにファイルを書き換えます。まず -i なしで結果を確かめてから付けます。
  • 置き換える文字に / が入るときは、s|/var/www|/srv/www|g のように別の区切りを使うと読みやすくなります。

実際に打って練習する

Linux レベル1 コースの Lv24「書き換える sed」で覚えます(第2章 宝探し(検索とテキスト処理))。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

Lv1〜16 は、登録不要・無料で遊べます(それより先はブロンズ以上のプランで遊べます)。

Linux コマンド一覧(LinuC レベル1 の範囲)へ戻る