ファイルの先頭にある複数行を削除したい (QDPファイルのヘッダを削除)

XSPECでデフォルトで使われているプロッティングライブラリ「QDP」で、表示中の生データを保存する際、wdataコマンドを使います。この結果生成されるファイルをgnuplotやROOT等でプロットしたいと思うと、先頭にあるヘッダ部分を削除しないといけません。8年間sedを使ってきましたが、複数行の削除ができると今日知りました。これを使えば、QDPデータファイルをgnuplot-readableなファイルに変換するのも一発です!

` sed -e “1,3d” outputOfQDP.data > sanitizedForGnuplot.data `

これで、QDPファイルの先頭3行にある以下のヘッダ行が削除できます。

QDPの生の出力(outputOfQDP.data):

1
2
3
4
5
6
7
8
9
10
11
12
READ
SERR 1 @spectrum.pco
!
6 5.00000024E-4 1.02629028E-2
6.00099993 5.00000024E-4 1.02538858E-2
6.00199986 5.00000024E-4 1.02497628E-2
6.00299978 5.00000024E-4 1.02456398E-2
6.00400019 5.00000024E-4 1.02415159E-2
6.00500011 5.00000024E-4 1.0237392E-2
6.00600004 5.00000024E-4 1.02332691E-2
6.00699997 5.00000024E-4 1.02340225E-2
...

ヘッダー削除後(sanitizedForGnuplot.data):

1
2
3
4
5
6
7
8
9
6 5.00000024E-4 1.02629028E-2
6.00099993 5.00000024E-4 1.02538858E-2
6.00199986 5.00000024E-4 1.02497628E-2
6.00299978 5.00000024E-4 1.02456398E-2
6.00400019 5.00000024E-4 1.02415159E-2
6.00500011 5.00000024E-4 1.0237392E-2
6.00600004 5.00000024E-4 1.02332691E-2
6.00699997 5.00000024E-4 1.02340225E-2
...

ちなみに、$HOME/.zshrc等の中で以下のようにaliasを登録しておくと、コマンド一発で変換できるようになりますね。zshを使ってない人はtcshやbashではなく、zshを使いましょう。人生の効率が3倍よくなります(とくに過去のコマンドの検索とcd無しでのフォルダの移動が便利)

1
2
3
4
5
~/.zshrc等で以下のように登録し、シェルを再起動
alias omitQDPHeader="sed -e '1,3d'"

以下のように使えます。
omitQDPHeader outputOfQDP.data > sanitizedForGnuplot.data