2016-04-12 9 views
0

行内で値がどのくらいの頻度で発生するかを調べる方法はありますか。私の入力は、タブ区切りの.txtファイルです。これは次のようなものです(数千行あります)。テキスト行にカウントが発生する

#N/A 14 13 #N/A 15 13 #N/A 14 13 13 15 14 13 15 14 14 15 
    24 26 #N/A 24 22 #N/A 24 26 #N/A 24 26 24 22 24 22 24 26 
    45 43 45 43 #N/A #N/A #N/A 43 45 45 43 #N/A 47 45 45 43 

私はこれを似たように出力したいと思います。

#N/A(3) 14 13(3) 15 13(1) 13 15(1) 15 14(1) 14 15 (1) 
24 26(4) #N/A(3) 24 22(3) 
45 45(4) #N/A(4) 43 45(1) 47 45(1) 

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

+0

はあなたが正しくあなたの質問をフォーマットすることができカウントですか? –

答えて

1

Perlの溶液:@Fアレイ

  • -l

    perl -laF'/\t/' -ne ' 
        chomp; my %h; 
        $h{$_}++ for @F; 
        print join "\t", map "$_ ($h{$_})", keys %h 
    ' < input 
    
    • -a分割-F上の各行は(\tタブを意味する)
    • -nを印刷するために改行を追加入力を読み取り行ごとに
    • chompは最後の改行
    • % hはハッシュテーブルで削除され、キーは@Fのメンバーで、値が
  • 0

    awkレスキュー!

    $ awk -F' +' -v OFS=' ' '{for(i=1;i<=NF;i++) if($i!="")a[$i]++; 
         for(k in a) printf "%s", k"("a[k]")" OFS; delete a; print ""}' file 
    
    #N/A(3) 14 13(3) 13 15(1) 15 13(1) 14 15(1) 15 14(1) 
    #N/A(3) 24 22(3) 24 26(4) 
    #N/A(4) 43 45(1) 45 43(4) 47 45(1) 
    
    +0

    は投稿したものと同じ間隔ですか?フィールドセパレータとして、少なくとも2つのスペースを探しています。 – karakfa

    +0

    OK。私は問題を見る。ご協力いただきありがとうございます。 –

    +0

    タブです。私はそれを\ tで修正する。ありがとう –

    関連する問題