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
하고 결과 개수를 마지막 필드에 추가합니다.