便利な sed スクリプトとパターン集
(github.com)- 1行だけ出力
→ sed -n '10p' file.txt
- 5行目を除くすべての行で文字列を置換
→ sed '5!/s/foo/bar/' file.txt
- 特定の文字で始まるすべての行で正規表現置換
→ sed '/^hello/ s/h/H/' file.txt
- 5行目から最終行までだけ置換
→ sed '5,$ s/foo/bar/' file.txt
- 空行を削除
→ sed '/^$/d' file
- 2つの正規表現の間にあるすべての行を出力
→ sed -nE '/^foo/,/^bar/p' file.txt
- スラッシュを含む文字列を簡単に探すためにカスタム区切り文字を使用
→ sed 's_/bin/bash_/bin/sh_' file.txt
- 空白区切りの重複文字列を削除(3回重複したものは除外)
→ sed -E 's_([a-zA-Z0-9_]+) \1_\1_ig' f1
- 特定のパターンを見つけて変更し、変更されたものだけを別ファイルに保存
→ sed 's_foo_bar_w replaced.txt' file.txt
- 複数を同時に置換
→ sed -e 's_foo_bar_' -e 's_hello_HELLO_' file.txt
- 2つのキーワードの間にあるすべてのコメントを削除して空行を入れる
→ sed -E '/start/,/end/ s/#.*//' file.txt
- #で始まるすべてのコメントを削除
→ sed -E '/^#/d' f1
- 特定のパターンが現れるところまでだけ出力する
→ sed '/start/q' file.txt
- 特定の行の後にファイルを挿入
→ sed '5 r newfile.txt' file.txt
- 特定の正規表現にマッチした部分の後の行にテキストを追加
→ sed '/foo/a\AFTER FOO' file.txt
- 特定の正規表現にマッチした行を置き換え
→ sed '/foo/c\FOO IS CHANGED' file.txt
- #で始まるすべてのコメントを別ファイルに保存
→ sed -E '/^#/w comments.txt' file.txt
- 2行おきに1行だけ出力(1行おき、3/4 などにも変更可能)
→ sed -n '1~2p' file.txt
- ファイルを直接編集しつつバックアップを作成
→ sed -i.bak 's/hello/HELLO/' file.txt
- 正規表現マッチの後に空行を2つ追加
→ sed -E '/^#/G G' file.txt
1件のコメント
スラッシュ以外の文字も区切り文字として使える、というのは本当に必須のTipsです。
apt リポジトリの URL を変更するときなど、スラッシュを含める場面はかなり多いので