データ構造

データ構造

File1は次のとおりです(代謝経路:遺伝子):

A:1
A:2
A:3
B:a
B:b
C:pp
D:rr

次のように出力ファイル(File1.newという名前)を取得するにはどうすればよいですか?

A:1、2、3
B:a、b
C:pp
D:rr

私はLinux初心者です。簡単に説明してくれて良かったです!

ベストアンサー1

これがawkの仕事です。

awk -F: '{L[$1]=L[$1] "," $2} 
    END { for (l in L) printf "%s:%s\n",l,substr(L[l],2);}'

どこ

  • -F::区切り文字として使用
  • {L[$1]=L[$1] "," $2}フィールド1でインデックス付けされたコンマ区切り値を保存します。
  • ENDファイルの終わりに
  • for (l in L) 値を介したループ
  • printf "%s:%s\n",l,substr(L[l],2);印刷、最初のカンマをスキップ
  • ","または、", "最後の部分文字列を適切に調整するために使用できます。

awk は以下を使用して 1 行で書くことができます。

awk -F: '....' File1 > File3

遺伝子の数を計算するには、var tou count(ここではG)を追加します。

{L[$1]=L[$1] "," $2;G[$1]++} 
END { for (l in L) printf "%s:%s:%d\n",l,substr(L[l],2),G[l];}

おすすめ記事