![awk를 사용하여 특정 열 값을 기반으로 고유한 행을 인쇄하는 방법은 무엇입니까? [폐쇄]](https://linux55.com/image/33656/awk%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%8A%B9%EC%A0%95%20%EC%97%B4%20%EA%B0%92%EC%9D%84%20%EA%B8%B0%EB%B0%98%EC%9C%BC%EB%A1%9C%20%EA%B3%A0%EC%9C%A0%ED%95%9C%20%ED%96%89%EC%9D%84%20%EC%9D%B8%EC%87%84%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%ED%8F%90%EC%87%84%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