sed の使い方
文字列を置換・行を削除
書き方
sed [-i] [-n] 's/前/後/g' [ファイル] sed '/パターン/d'
-i でファイルを直接書き換えます。設定ファイルの一部を変えるときに便利。
よく使うオプション
| オプション | 意味 |
|---|---|
-i | 結果を出すのではなく、ファイルを直接書き換える(-i.bak で控えも作る) |
-n | p を付けた行だけを出す |
-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 は、登録不要・無料で遊べます(それより先はブロンズ以上のプランで遊べます)。