ファイルの指定行数から指定行数まで抜き出す

こんなときどうしてる? シリーズです。

ファイルの指定行数から指定行数まで抜き出したいときがあります。

たとえば、/var/hoge.logの10行目から15行目までを抜き出したいときとかに、僕は、とっさにawkを使って、

$ awk 'NR >=10&&NR<=15{print $0}' < /var/hoge.log

と書いてしまったのですが、もっと他のやり方があるような気がしてなりません。みなさんはこういうシチュエーションのときはどうやってますか?

前もどこかで書いた気がしますが、「二つのファイルから違う行だけ抜き出す」だとか「あるディレクトリ以下から5日以内に更新があったファイルをリストする」だとか、そういうよくありがちなチマチマしたシチュエーションに即時に対応するできるノウハウをググらずにどれだけ持ってるかが、僕がエンジニアに職人らしさを感じて尊敬できるところなんだと思います。

コメント

コメント一覧 (2件)

  • 一番簡単なのは、headとtailを組み合わせた方法ですね。
    $ head -15 hoge.log | tail -5
    一番入力が少ないのは、sedを使った方法だと思われます。
    $ sed -n 10,15p

  • コメントどうもです。
    head/tailかぁ、なるほど。
    素直に感動しました。さすが!

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次