ファイルの1行目だけスキップして出力するコマンド
コマンドラインでCSVファイルを出力し、パイプで渡して処理を行うことが多いのだが、その際ヘッダ行が邪魔になることが多い。例えば以下のようなCSVファイルの場合、データ集計をする際にヘッダ行は必要ない。
$ cat filename.csv 会員番号,職業,スコア 10001,事務,10 10002,経理,8 10003,営業,4 10004,人事,7
今まではgrep等の検索結果を工夫して1行目が自然と落ちるように頑張ってなんとかしたことも多いが、検索に不要なデータはなるべく処理の前段階で落としておきたい。
良い方法がないかと思っていたら、意外にもtailコマンドに良い指定方法があった。
$ tail -n +2 filename.csv 10001,事務,10 10002,経理,8 10003,営業,4 10004,人事,7
tailコマンドでは -n
オプションで出力行数を指定できるが、 +2
のようにすると2行目以降のみを出力できる。この数字は任意の指定ができ、例えば +11
とすると11行目以降となる。このオプションを使うようになってから、パイプの数を減らすことができた例も多く、非常に重宝している。
ちなみにheadコマンドでも似たような指定方法がある。ただしこちらの場合、 -2
のように指定すると最後の2行目を除いた状態で出力される。また、このオプションはGNU版のみで使えるようだ。
$ head -n -2 filename.csv 会員番号,職業,スコア 10001,事務,10 10002,経理,8