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