行指定アドレス

行指定アドレスの書式と例
書式 意味
行番号 3 3行目。入力ファイルが複数の場合も通算で行数をカウント。(--separateで別々に)
行番号 ! 3 ! 3行目以外。
開始行~行間隔 3~5 3行目、3+5行目、3+5+5行目…と5行間隔で処理する。1~2なら奇数行、2~21~2 !なら偶数行。
$ $ 最終行。5,$なら5行目から最終行まで。
開始行,+行数 2,+3 2行目から2+3行目まで。
開始行,+行数 ! 2,+3 ! 「2行目から2+3行目まで」以外

ここではアドレスを2個まで指定できるdコマンド(マッチした行について、パターンスペースを削除)を例にする。


ステップ(n行ごとに適用)

input='1行目
2行目
3行目
4行目
5行目'

echo "$input" | sed '1~2 d'

上記は1行目から2行ごとに、つまり奇数行を削除するので、出力はこうなる。

2行目
4行目

最終行

input='1行目
2行目
3行目'

echo "$input" | sed '2,$ d'

上記は2行目から最終行まで削除するので、出力はこうなる。

1行目

プラスn行

input='1行目
2行目
3行目
4行目'

echo "$input" | sed '2,+1 d'

上記は2行目から始まり加えて1行削除するので、出力はこうなる。

1行目
4行目

アドレスの否定

!を使ってアドレスを逆の意味にできる。

input='1行目
2行目
3行目
4行目'

echo "$input" | sed '2,+1 ! d'

出力はこうなる。

2行目
3行目