두 파일의 첫 번째 줄만 비교하는 방법은 무엇입니까?


17

전체 파일이 아닌 두 파일의 첫 번째 줄만 비교하고 싶습니다. 어떻게해야합니까? 첫 번째 줄에 대한 솔루션 만 필요하지만 훨씬 더 나은 대답을 줄 수를 지정할 수 있다면.

따라서 diff는 다음 두 파일간에 차이를 반환하지 않습니다.

a
1
2

과:

a
3
4

그게 너를 위해 일 했니?
nerdwaller 2016

@nerdwaller 예, 받아 들였습니다.
gsingh2011

멋진 콩. 다행스럽게도 다른 옵션을 생각하려고했지만 필요하지 않습니다.
nerdwaller 2011

답변:


26

여기 있습니다 :

diff <(head -n 1 file1) <(head -n 1 file2)

(이것은 아무것도 반환하지 않습니다).

diff <(head -n 2 file1) <(head -n 2 file2)

Returns:
2c2
< 1
---
> 3

언급 한 것을 수행하기 위해이를 스크립트에 통합 할 수 있습니다.

#!/bin/bash

fileOne=${1}
fileTwo=${2}
numLines=${3:-"1"}

diff <(head -n ${numLines} ${fileOne}) <(head -n ${numLines} ${fileTwo})

이를 사용하려면 스크립트를 실행 가능하게 chmod +x nameofscript.sh한 다음 실행 ./nameofscript.sh ~/file1 ~/Docs/file2하십시오. 명령 끝에 숫자를 더 추가하려면 기본 줄 수를 1로 둡니다.

(또는 -f1 file1 -f2 file2 -n 1을 사용하여 스크립트에서 스위치를 수행 할 수는 있지만 그 머리에 대한 사례 진술을 기억하지 못합니다).

head에서 제안한대로 줄 수를 처음부터 반환합니다 -n. 당신이 반대로하고 싶다면, 그것은 tail -n ${numLines}끝에서 줄 수까지 끝납니다.

5/10/16 편집 :

이것은 Bash (및 호환되는 쉘)에만 해당됩니다. 다른 것에서 이것을 사용해야하는 경우 :

bash -c 'diff <(...) <(...)'

두 디렉토리를 diff해야 할 때 재귀 diff에 어떻게 작동합니까?
lanoxx

diff -r dir1 dir2디렉토리의 경우 @lanoxx 를 제한하려면 다른 것으로 파이프하는 것이 좋습니다. 구체적인 내용이 있으면 새 질문을 열고 여기에 링크를 제공하십시오.
nerdwaller 2016 년

기본적으로 동일한 질문이 재귀 적으로 있습니다. 두 디렉토리의 모든 파일에 대해 Diff only (첫 번째 n 행 | 첫 번째 n 행을 제외한 모든 것).
lanoxx

내가 말한 것처럼 @lanoxx는 새로운 질문을하고 연결합니다. 다른 사용자의 질문 범위를 확장하는 대신 수퍼 유저 커뮤니티에 가장 좋습니다.
nerdwaller 2016 년

1
@Veridian 어떤 쉘을 사용하고 있습니까? 이것은 배쉬 전용이므로 전화해야 할 수도 있습니다bash -c "diff <(...) <(...)"
nerdwaller

-1

diff -U (n 줄) file1 file2


1
슈퍼 유저에 오신 것을 환영합니다! -U논쟁 에 대해 좀 더 자세히 설명해 주 시겠습니까? :)
bertieb
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.