두 파일의 열 사이의 특정 줄 수를 비교합니다.

두 파일의 열 사이의 특정 줄 수를 비교합니다.

천 개의 파일이 있고 두 번째 열(최대 특정 행 수)에 모두 동일한 정보가 있는지 확인해야 합니다. 아래는 예시입니다. file1.txt와 file2.txt 파일의 두 번째 열의 처음 5줄이 같지 않으면 파일 이름을 인쇄하고 싶습니다. 이 경우 결과는 다음과 같아야 합니다. "file1.txt 파일과 file2.txt 파일 간의 차이점"

파일 1.txt

jose     50
maria    50
fernando 50
andres   50
martin   30
pablo    30
.
.
.

파일 2.txt

julia    50
julio    50
alan     50
ruth     50
ana      40
manuel   40
.
.
.                    

답변1

잘. 나는 파일에 대해 for 루프를 수행한 다음 comm.

/tmp ❯ comm -3 <(cat file1.txt|awk '{print $2}') <(cat file2.txt|awk '{print $2}')                                    ⏎
30
30
    40
    40

파일에서 30과 40이 출력됩니다. 몇 가지 기본 용도는 다음과 같습니다 comm. comm -1 -3 <(sort -u FILE1.txt) <(sort -u FILE2.txt)

  • -1은 FILE1 관련 행을 억제합니다.
  • -2 FILE2 관련 라인을 억제합니다.
  • -3은 두 파일 모두에 나타나는 줄을 억제합니다.

따라서 이 모든 것을 다음과 같이 정리하세요.

cd /path/to/files && find . -type f -name "*.txt" | while read filename
do
   echo "*** Checking $filename ***"; comm -3 <(cat reference.txt|awk '{print $2}') <(cat $filename|awk '{print $2}'); echo "";
done

관련 정보