2012-05-03 2 views
5

diff (또는 다른 쉬운 bash 명령)을 사용하여 두 파일의 첫 번째 줄이 동일한 지 확인할 수 있습니까?두 파일 중 일부의 동일성 검사

[J 행 I 일반적/제 마지막 k 라인 어떤지를 체크하거나, 짝수 라인]

답변

9

두 파일의 처음 K 라인 diff를 위하여 :

$ diff <(head -k file1) <(head -k file2) 

Similary를 마지막 K를 diff를 할 라인 : DIFF 라인에

$ diff <(tail -k file1) <(tail -k file2) 

내가 J에 :

diff <(sed -n 'i,jp' file1) <(sed -n 'i,jp' file2) 
+0

'i, jp'의 'p'는 무엇을 의미합니까? –

+0

'p '는 인쇄를 의미합니다. – dogbane

+0

그리고 평등을 확인하십시오 :'if diff ...; 그런 다음 "동일 함"을 표시합니다. else echo "not equal"; fi' –

0

아래 명령은 두 파일의 첫 번째 줄을 표시합니다.

krithika.450> head -1 temp1.txt temp4.txt 
==> temp1.txt <== 
Starting CXC <...> R5x BCMBIN (c) AB 2012 

==> temp4.txt <== 
Starting CXC <...> R5x BCMBIN (c) AB 2012 

아래 명령은 두 파일의 첫 번째 줄이 같으면 yes를 표시합니다.

krithika.451> head -1 temp4.txt temp1.txt | awk '{if(NR==2)p=$0;if(NR==5){q=$0;if(p==q)print "yes"}}' 
yes 
krithika.452> 
1

위의 도그 방에 비해 내 솔루션이 다소 기본적이고 초보적인 것처럼 보입니다.하지만 여기서는 모두 동일합니다!

echo "Comparing the first line from file $1 and $2 to see if they are the same." 

FILE1=`head -n 1 $1` 
FILE2=`head -n 1 $2` 

echo $FILE1 > tempfile1.txt 
echo $FILE2 > tempfile2.txt 

if diff "tempfile1.txt" "tempfile2.txt"; then 
    echo Success 
else 
    echo Fail 
fi 
1

내 솔루션은 patchutils 프로그램 모음의 filterdiff 프로그램을 사용합니다. 다음 명령은 줄 번호 j에서 k까지의 file1과 file2의 차이점을 보여줍니다.

diff -U 0 file1 file2 | filterdiff --lines j-k 
관련 문제