2016-09-23 14 views
0

私はかなり簡単な問題があります。 file1では、1行にどれくらいの数があるかを数え、その合計を集計し、同じファイルまたは別のファイルの最後に2列としてカウントと行番号を出力します。行の出現をカウントし、結果を列にプッシュ

入力:

h1 h2 h3 h4 
A H H B 
B H C H 
A A A H 

所望の出力:

h1 h2 h3 h4 count rowid 
A H H B  2  1 
B H C H  2  2 
A A A H  1  3 

は、ここで私がこれまで持っているものです。

awk -F'\t' 'BEGIN{print $0 "count", "rowid"} {print gsub(/H/,"") FS NR}' file1.txt >out.txt 

は私の誤りである場合は、私はそれを動作させるために何を変更できますか?

+0

入力/出力の写真にリンクしてはいけませんが、質問自体にテキストを貼り付けるべきです。 –

+0

Stackoverflowは、10人の評判ポイントが得られるまで、新しいユーザーにそれをさせません。 – berge2015

+0

私は絵を貼り付けないで、テキストを入力してください。貼り付けをコピーして、テストしたい人にはコピーペースト可能です。 –

答えて

1

awkレスキュー!

$ awk 'NR==1{print $0, "count", "rowid"; next} 
      {print $0, gsub("H","H"), NR-1}' file | 
    column -t 

h1 h2 h3 h4 count rowid 
A H H B 2  1 
B H C H 2  2 
A A A H 1  3 
+0

ありがとう、先生!私は私のニーズに合わせてちょっと変わった。とても有難い。 'awk 'NR == 1 {print $ 0" \ t "" count "" \ t "" rowid ";オリジナルのコードセット 'awk -v OFS = 'の代わりに、' \ t "NR-1}' file1.txt> out.txt' – berge2015

+0

を出力します。 \ t '... '。 – karakfa

+0

@ berge2015、カラクファのコメントを展開し、OFSをタブに設定してから、印刷文でカンマを使用してください: 'awk -v OFS =" \ t "'NR == 1 {print $ 0、" count "、" rowid "; next} {print $ 0、gsub( "H"、 "H")、NR-1} '' - それはきれいに見えます。 –

関連する問題