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];}