古い記事
ランダムジャンプ
新しい記事
sed は行単位で文字列処理を行うプログラム。
文字や行の削除、挿入、置換などができる。
標準入力を処理して標準出力に出すフィルタとして機能する。

レシピ


先頭/末尾の一行を消す:
sed 1d
sed '$d'

1行目から10行目を消す/出す:
sed 1,10d
sed '1,10!d'
sed -n 1,10p

「RT」が含まれる行を消す/出す:
sed /RT/d
sed -n /RT/p

1行目から2行おきに消す/出す:
sed 1~2d
sed -n 1~2p

1行目はそのまま出し残りの行はマッチした行だけ出す:
sed -ne 1p -e /RT/p

2行目の前/後に文字列/改行を挿入:
sed '2i 文字列'
sed '2i \\'
sed '2a 文字列'
sed '2a \\'

空行を削す:
sed '/^$/d'

行頭から3番目に登場したタブを消す:
sed -r 's/\t//3'

条件にマッチしたファイルの中身を置き換える:
find . -name "*.txt" | xargs sed -i 's/\t/ /g'
grep -rl "hello" . | xargs sed -i s/hello/HELLO/

正規表現:後方参照、大文字小文字、個数指定、OR
echo 'ABCDE...vwxyz' | sed -r 's/([A-D])/\L\1/g;s/([w-z])/\U\1/g'
echo ' A\n  B\nC' | sed -r 's/^ {1,4}/\t/;s/(A|C)/X/g'

条件にマッチした行の前に行を追加:
sed '/ABC/i ###あやしいK###'

ホールドスペースを使って行を逆順にする: catの逆のtacと同等
sed -n 'G;h;$p'  aa.txt

オプションやコマンド


  • d : 行を消す。
  • !d : 指定以外の行を消す。
  • p : 表示。明示的に。"-n" との組み合わせ。
  • $ : 最後の行を表す。
  • = : 現在の行番号
  • i,a : 文字列の挿入
  • "-e" (or オプションなし) : 弱い正規表現。
  • "-r" or "-E" : perl などに近い正規表現。
  • "-u" : unbufferd. "tail -f" との組み合わせなどに。
  • "-n" : 各行を表示しない。
  • "-i" : ファイルを直接書き換える。

参考


この記事に言及しているこのブログ内の記事