첫 번째 쉼표 이전의 일치 항목을 기준으로 중복된 줄 수를 제거합니다.

첫 번째 쉼표 이전의 일치 항목을 기준으로 중복된 줄 수를 제거합니다.

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

다음은 몇 가지 awk2단계 솔루션입니다. 첫 번째 패스에서는 필드 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결과 개수를 마지막 필드로 추가합니다.

관련 정보