두 파일의 처음 20줄을 비교합니다.

두 파일의 처음 20줄을 비교합니다.

n두 파일의 처음 20줄(또는 줄)을 비교하는 간단한 방법이 있습니까 ?

자동 덤프를 설정했는데 pg_dump생성되는 덤프가 손상되어 지금은 복원할 수 없는 것으로 나타났습니다.

1년 전의 좋은 덤프 파일이 아직 남아 있고 두 파일 사이의 처음 20줄을 비교하고 싶습니다.

이를 수행하는 쉬운 방법이 있습니까?

저는 Manjaro Linux를 사용하고 있습니다.

답변1

예 를 <(...)들어 프로세스 대체( )가 있는 쉘을 사용하십시오 .bashzsh

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또는 다른 옵션을 사용할 수 있습니다(매뉴얼 참조).-udiffdiff


파일이 압축된 경우 데이터의 압축을 풀어야 합니다.

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

관련 정보