나는 이것이 인터넷 검색으로 쉽게 할 수 있지만 성공하지 못한다는 것을 알고 있습니다. 미안합니다.
첫 번째 열에 정의된 값 그룹의 첫 번째 행을 인쇄하고 싶습니다. 구분 기호는 탭 문자입니다.
입력하다:
A 5
A 3
B 2
B 1
B 77
C 4
C 10000
D 99
산출:
A 5
B 2
C 4
D 99
답변1
가장 짧은:
awk -F'\t' '!a[$1]++' file
산출:
A 5
B 2
C 4
D 99
!a[$1]++
- 첫 번째 열의 첫 번째 고유 값이 발견되면 행 인쇄가 발생하는지 확인하십시오.
답변2
다음과 같은 작업이 수행됩니다.
awk -F\t 'BEGIN {A=""} {if ($1!=A) { print $0; A=$1}}' input_file
변수 A 초기화 시 첫 번째 열의 기존 목록에 없는 초기값을 선택
답변3
다음은 awk가 아닌 두 가지 옵션입니다.
sort u foo -k 1,1
sort
-u
( ) 기능 에만 사용됩니다 --unique
. -k 1,1
비교에는 첫 번째 문자( )만 사용됩니다.
rev foo | uniq -f 1 | rev
사용 uniq
. 이 -f
옵션은 비교할 시작 필드만 지정하도록 허용하므로 먼저 rev
입력을 반전( ) uniq
한 다음 rev
해당 출력을 다시 출력하는 몇 가지 트릭을 사용합니다.