n
두 파일의 처음 20줄(또는 줄)을 비교하는 간단한 방법이 있습니까 ?
자동 덤프를 설정했는데 pg_dump
생성되는 덤프가 손상되어 지금은 복원할 수 없는 것으로 나타났습니다.
1년 전의 좋은 덤프 파일이 아직 남아 있고 두 파일 사이의 처음 20줄을 비교하고 싶습니다.
이를 수행하는 쉬운 방법이 있습니까?
저는 Manjaro Linux를 사용하고 있습니다.
답변1
예 를 <(...)
들어 프로세스 대체( )가 있는 쉘을 사용하십시오 .bash
zsh
diff <( head -n 20 file1 ) <( head -n 20 file2 )
이는 head -n 20
각 파일에서 실행되어 두 개의 별도 프로세스 대체에서 각 파일의 처음 20줄을 가져옵니다. 각 프로세스 대체는 다음으로 확장됩니다.파일 경로 이름명령의 출력을 읽을 수 있습니다(이 파일은 임시 파일이므로 나중에 삭제됩니다).
그런 다음 두 데이터 세트를 비교하기 위해 diff
유틸리티가 호출됩니다.
프로세스 교체 없음:
head -n 20 file1 >file1.short
head -n 20 file2 | diff file1.short -
rm -f file1.short
이는 한 파일의 처음 20줄을 기반으로 별도의 파일을 생성하고 diff
표준 입력에서 다른 파일의 처음 20줄을 읽는 동안 해당 파일을 사용합니다.
선택한 diff 형식을 얻으려면 위 명령과 함께 -c
또는 다른 옵션을 사용할 수 있습니다(매뉴얼 참조).-u
diff
diff
파일이 압축된 경우 데이터의 압축을 풀어야 합니다.
diff <( gzip -d -c <file1 | head -n 20 ) <( gzip -d -c <file2 | head -n 20 )
또는 프로세스 대체 없이:
gzip -d -c <file1 | head -n 20 >file1.short
gzip -d -c <file2 | head -n 20 | diff file1.short -
rm -f file1.short