천 개의 파일이 있고 두 번째 열(최대 특정 행 수)에 모두 동일한 정보가 있는지 확인해야 합니다. 아래는 예시입니다. 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