첫 번째 쉼표 앞의 일치 항목을 기준으로 중복 행 제거

첫 번째 쉼표 앞의 일치 항목을 기준으로 중복 행 제거

Linux Centos 7 서버에 큰 텍스트가 있고 첫 번째 쉼표 앞에 일치하는 줄을 제거하고 싶습니다.

입력하다:

112112112,00,00,00
110110,01,01,02
112112112,11,11,888
110110,99,88,8
410410,22,22,22

산출:

410410,22,22,22

답변1

awk다음은 몇 가지 이중 채널 솔루션 입니다 . 첫 번째 패스에서는 필드 1의 빈도를 배열에 저장합니다 x. x필드 1의 빈도가 1로 보고 되면 두 번째 패스에서는 한 줄을 인쇄합니다.

awk -F, 'first_pass{x[$1]++; next}; x[$1] == 1' first_pass=1 file first_pass=0 file

awk -F, 'BEGIN{while ((getline<ARGV[1]) > 0)x[$1]++}; x[$1] == 1' file

답변2

짧은GNUdatamash+sed콤비네이션:

datamash -sft',' -g1 count 1 <file | sed -n 's/,1$//p'

위 파이프라인의 첫 번째 프로세스는 첫 번째 필드 값에 대해 각 그룹의 항목 수를 그룹화하여 계산 -g1하고 결과 개수를 마지막 필드에 추가합니다.

관련 정보