이 diff를 사용하여 두 파일이 다른지 표시하지만, 신경 쓰지 않는 다른 줄을 무시하려면 정규식이 필요합니다. 그러나 설정 방식에 따라 차이점을 보고할 때 파일 이름이 변경됩니다.
diff -q --suppress-common-lines -B <(grep -vE '\s(name|timestamp|root)=' goldcopy.xml) <(grep -vE '(\sname|timestamp|root)=' QJ03425234.xml)
"파일 /dev/fd/63과 /dev/fd/62가 다릅니다"와 같은 내용이 보고되지만 파일 이름이 필요하므로 누군가가 어떤 파일에서 실행 중인지 모르는 경우에도 어떤 파일을 알 수 있는지 알 수 있습니다. 다르다 .
답변1
oneliner에서 diff는 실제로 파일이 아니라 grep
셸(bash)에 의해 동적으로 생성되는 두 파일 설명자 각각에 대해 /dev/fd/63
/dev/fd/62
공통 이름입니다. <( command )
관용어가 불린다.프로세스 교체diff
이므로 명시적으로 지정하지 않는 한 원본 파일 이름을 직접 알 수 있는 방법은 없습니다 . --label
또는 -L
옵션 사용을 고려하십시오 .
F1=goldcopy.xml; F2=QJ03425234.xml; diff -L $F1 -q --suppress-common-lines -B <(grep -vE '\s(name|timestamp|root)=' $F1) -L $F2 <(grep -vE '(\sname|timestamp|root)=' $F2)