Bashシェルスクリプトでファイルや標準入力の先頭N行、末尾N行を除去する方法
はじめに
シェルスクリプトで標準入力で受け取った情報の先頭N行、末尾N行を削る方法について紹介します。
検証環境
標準入力として渡すデータ
seq
コマンドを使って、 1〜10 の数値を渡して、先頭の 2行 と 末尾の 2行 を削ってみます。
head
, tail
を使う
head
はファイルや標準入力の先頭から何行を出力(デフォルトでは10行)というように使うケースが多いですが、 「ファイル末尾から数えて何行目より前をすべて出力」 という場合にも利用できます。-n -
という変わったオプションを利用します。
tail
コマンドにも同じように、 「ファイル先頭から数えて何行目以降をすべて出力」 というオプションがあります。-n +
というオプションを指定します。
head
の場合は -n -2
ですが、 tail
の場合は -n +2
ではなく -n +3
であることに注意が必要です。「より前」なのか「以降」なのかがややこしいですね。
あとはhead
と tail
を組み合わせればOKです。
ひとこと
CSVのヘッダー行を取り除く場合や、末尾の集計行を取り除く場合に便利でよく使います。
e-statのようなサイトで公開されているCSVには、データ以外の説明などが含まれていたりします。
head
、 tail
の使い方を知っていると非常に便利です。
ディスカッション
コメント一覧
まだ、コメントがありません