次の表があります。
Genes Category
1. Gene1 dark_11
2. Gene1 dark_9
3. Gene2 dark_7
4. Gene1 dark_5
Category
同じ行名を持つ列のコンマ区切り値をマージして、次のようなGenes
出力を取得したいと思います。
Genes Category
1. Gene1 dark_11, dark_9, dark_5
2. Gene2 dark_7
どんな助けでも大変感謝します。
答え1
awk配列を使用して、満たす条件に基づいてインデックスを作成し、関連する各カテゴリを配列の各値に追加できます。たとえば、次のようになります。
awk 'NR==1 {print $0}; NR>1 {if(cat[$2])cat[$2]=cat[$2]", "$3; else cat[$2]=$3;}; END{j=1; for (i in cat) print j++".", i, cat[i]}' test.txt
test.txt
入力ファイルです。
配列cat
には2つの値が含まれます。cat[GeneX]
これには、各遺伝子が連結されたカテゴリを含む文字列が含まれます。配列の正しい値にカテゴリを追加する前に、配列が空であることを確認する必要があります。カテゴリ間にカンマを追加するだけです。