awkを使用して特定の列値に基づいて一意の行を印刷する方法は? [閉鎖]

awkを使用して特定の列値に基づいて一意の行を印刷する方法は? [閉鎖]

複数のフィールドを含むカンマ区切りのファイルがあります。

例:

candidate1,12,56,ATTG
candidate2,45,90,ATTG
candidate3,90,140,ATTG
candidate4,2,36,AGCT

それでは、答えを知っている人はいますか?

答え1

candidate1列1などに基づいて一意の行を印刷する必要があるとしますcandidate2。これにより、行candidate1などの最初のインスタンスが印刷されます。列2に基づいて行のみを印刷するには、次の$1ように変更します。$2

awk -F, '!($1 in arr){print} {arr[$1]++}' file_name

答え2

すべてのフィールドが次のようにコンマで区切られている場合

1, candidate1,12,56,ATTG
2, candidate2,45,90,ATTG 
3, candidate3,90,140,ATTG 
4, candidate4,2,36,AGCT

だからあなたはこれをする

$ grep -E 'candidate1 | candidate3'ファイル名| awk -F, '{print $0}'
1.候補1,12,56,ATTG
3. 候補者 3,90,140,​​ATTG

単一行の別の例

$ catファイル名| egrep 'candidate3' | awk -F, '{print $0}'
3. 候補者 3,90,140,​​ATTG

関連情報