はじめに
シェルスクリプトで標準入力で受け取った情報の先頭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 の使い方を知っていると非常に便利です。