2017-06-06 9 views
2

私はbashのファイルからの出力を処理しており、それらのキーで値をグループ化する必要があります。bashでどのようにマルチマップを変換する<K,V><K, {V1,V2}>

13,47099,54024,1,39956,0 
17,126223,52782,4,62617,0 
23,1022724,79958,80590,230,1,118224,0,1049 
42,72470,80185,2,89199,0 
54,70344,72824,1,62969,1 

に私の入力ファイルには約10000のエントリがありますよう

例えば、私は一つのラインに特定のキーからすべての値のファイルおよびグループ内

13,47099 
13,54024 
13,1 
13,39956 
13,0 
17,126223 
17,52782 
17,4 
17,62617 
17,0 
23,1022724 
23,79958 
23,80590 
23,230 
23,1 
23,118224 
23,0 
23,1049 
42,72470 
42,80185 
42,2 
42,89199 
42,0 
54,70344 
54,72824 
54,1 
54,62969 
54,1 

を持っています。このデータをシェルでどのように変換するのですか?

答えて

4

awkレスキュー!仮定すると、キーが連続している

...

$ awk -F, 'p!=$1 {if(a) print a; a=p=$1} 
       {a=a FS $2} 
      END {print a}' file 

13,47099,54024,1,39956,0                             
17,126223,52782,4,62617,0                             
23,1022724,79958,80590,230,1,118224,0,1049                         
42,72470,80185,2,89199,0                             
54,70344,72824,1,62969,1  
+0

完璧な答え。 。私が望んでいただけ – Anoop

関連する問題