2017-04-14 4 views
0

Iはtab-delimitedfileのヘッダー行のフィールドの数をカウントするheadawkの組み合わせを使用しています。以下は非常に近いようですが、私はまた改行の上にfileのヘッダー名を印刷したいと思います。多分もっと良い方法がありますが、うまくいけば始まります。ありがとうございました :)。電流出力とファイルのヘッダ行をカウントし、印刷するAWK

ファイル

Index Chr Start End Ref ALT 

awkの

head -n 1 file | awk -F'\t' '{print NF " fields detected in file"}' 
6 fields detected in file 

所望の出力

6 fields detected in file 
Index Chr Start End Ref ALT 

答えて

2

これを試してみてください -

$ awk ' {print NF " fields detected in file"} END {print}' f 
6 fields detected in file 
Index Chr Start End Ref ALT 

OR

$ awk ' {print NF " fields detected in file"RS $0;exit}' f 
6 fields detected in file 
Index Chr Start End Ref ALT 
+1

フィールド名にスペースが含まれている場合は、タブをFSに設定している可能性があります。 – karakfa

+0

ありがとうございました。 – Chris

+0

@VIPINKUMAR今朝はもう少しコーヒーが必要です! 'printf NF"の代わりに 'print NF、" ... "を使うべきである、' $ 0'の未定義の動作に依存するので、最初のスクリプトはいくつかのawkでしか動作しません。 \ n "'、デフォルトでは '$ 0'を指定する必要はありません。 'printf $ 0'、常に' printf "%s"、$ 0'を使わず、printfの書式設定文字が入力に含まれていないと暗号化に失敗するので、 tハードコード "\ n"可搬性のためにORSを使用してください。 –

1

あなたのファイルがある場合だけヘッダーが、同様に

awk -F'\t' '{print NF " fields detected in file"; print; exit}' file 

あなたがhead文を必要としないデータが含まれていません。しかし、ヘッダーをチェックするだけで、より良いQCスクリプトですべてのレコード長をチェックする必要があります。

+1

Ooops!一定。どうも。 – karakfa

1
awk -F'\t' '{print NF, "fields detected in file" ORS $0; exit}' file 
+1

いいえ、それはできません。フィールドはタブで区切られています。質問の例を参照してください。ここではOPが入力ファイルの '-F '\ t''を使用してフィールド数として出力6を使用することを具体的に示しています。 –

関連する問題