スポンサーリンク

sedのpコマンドで抽出する行を指定

※awkの使い方をまとめて一覧にしました。
参考:awk入門-使い方まとめ一覧-

※MACターミナル(BSD系)での動作確認です。
ただし、gsedをインストールして、aliasでalias sed='gsed'としています。

例えば、下記のin.txtがあったとします。

$ cat in.txt 
1grep
2ls
3gawk
4which
5where

sedのpコマンドで2~4行目を出力しています。

$ sed -n 2,4p in.txt 
2ls
3gawk
4which

上記は -n オプションをつけていることに注意です。
-nオプションをつけないと、下記のように一旦ファイル全体の行が出力されてしまいます。
$ sed 2,4p in.txt 
1grep
2ls
2ls
3gawk
3gawk
4which
4which
5where

スポンサーリンク

awkのNR変数で抽出する行を指定

awkの場合は、NR変数を使うとよいかと思います。
参考:awkのNR変数で行数に応じた処理をする

例えば、2~4行目を出力する場合には、ワンライナーで下記のように書けます。

$ cat in.txt | awk '2<=NR && NR<=4{print $0}'
2ls
3gawk
4which

awkだと、応用として下記のようなこともできます。

例えば、下記のin2.txtがあったとします。

$ cat in2.txt 
1grep,33
2ls,44
3gawk,55
4which,11
5where,77

2~4行目の2列目の数値の合計を出力しています。
参考:awkのワンライナーのサンプルコード

$ cat in2.txt | awk -F, '2<=NR && NR<=4{sum+=$2} END{print sum}'
110

スポンサーリンク