![awkを使用して特定の列値に基づいて一意の行を印刷する方法は? [閉鎖]](https://linux33.com/image/33656/awk%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E7%89%B9%E5%AE%9A%E3%81%AE%E5%88%97%E5%80%A4%E3%81%AB%E5%9F%BA%E3%81%A5%E3%81%84%E3%81%A6%E4%B8%80%E6%84%8F%E3%81%AE%E8%A1%8C%E3%82%92%E5%8D%B0%E5%88%B7%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%AF%EF%BC%9F%20%5B%E9%96%89%E9%8E%96%5D.png)
複数のフィールドを含むカンマ区切りのファイルがあります。
例:
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