열의 값이 변경되면 행 인쇄

열의 값이 변경되면 행 인쇄

나는 이것이 인터넷 검색으로 쉽게 할 수 있지만 성공하지 못한다는 것을 알고 있습니다. 미안합니다.

첫 번째 열에 정의된 값 그룹의 첫 번째 행을 인쇄하고 싶습니다. 구분 기호는 탭 문자입니다.

입력하다:

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해당 출력을 다시 출력하는 몇 가지 트릭을 사용합니다.

관련 정보