중복이 없나요? [폐쇄]

중복이 없나요? [폐쇄]

동일한 폴더의 여러 파일에 텍스트 파일의 여러 개정판이 있습니다.

내가 어떻게 할 수있는grep폴더의 어떤 파일에도 동일한 텍스트가 포함된 중복된 줄이 나열되어 있지 않습니까?

답변1

어때요?

cat * | grep exampletext | sort -u

답변2

나는 사용한다:

grep -h test files* | puniq

puniq예:perl -ne '$seen{$_}++ or print;'

비슷 sort -u하지만 입력을 정렬하는 대신 런타임에 출력을 제공합니다.

파일 이름이 필요하고 각 파일에서 중복된 줄을 피하는 경우:

parallel --tag --lb 'grep string {} | puniq' ::: files*

파일 이름이 필요하고 어떤 파일에서도 중복된 줄을 원하지 않는 경우(파일 이름에는 TAB(\t)가 포함되어서는 안 됩니다):

parallel --tag --lb grep string {} ::: files* |
  perl -ne '/^[^\t]+(.*)/ and $seen{$1}++ or print;'

답변3

아마도 이와 같은 것이 여러분의 상상에 가까울 수도 있습니다(gnu awk와 함께 사용):

cat file1
1
2
3
22

cat file11
1
2
3
8
9

cat file111
1
2
3
5
6

awk '{seen[$0]++;fname[$0]=FILENAME};END{for (k in seen) {if (seen[k]==1) print fname[k],":",k}}' file1*
file111 : 5
file111 : 6
file11 : 8
file11 : 9
file1 : 22

답변4

결과를 파이프하여 정렬하여 중복 항목을 필터링합니다.

grep -re pattern files and dirs ... | sort -ut: -k2

sort의 -t:및 옵션을 -k2사용하면 정렬 및 병합을 수행할 때 파일 이름을 무시합니다.

또는 파일 이름이 필요하지 않은 경우 다음을 수행하십시오.

grep -hre pattern files and dirs ... | sort -u 

관련 정보