2012-05-03 14 views
5

क्या यह जांचना संभव है कि दो फाइलों की पहली पंक्ति diff (या कोई अन्य आसान बैश कमांड) का उपयोग कर बराबर है या नहीं?दो फाइलों के हिस्से की समानता की जांच

[j के लिए आम तौर पर प्रथम/अंतिम k लाइनों की समानता की जाँच, या यहाँ तक कि लाइनों मैं]

उत्तर

9

दो फ़ाइलों की पहली कश्मीर लाइनों diff के लिए:,

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

Similary पिछले कश्मीर diff के लिए लाइनों:

$ diff <(tail -k file1) <(tail -k file2) 
diff लाइनों के लिए

मैं जे के लिए:

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

'i, jp' में 'p' का अर्थ क्या है? –

+0

'पी' का मतलब प्रिंट है। – dogbane

+0

और समानता की जांच करने के लिए: 'अगर diff ...; फिर "बराबर" गूंजें; अन्य "बराबर नहीं" गूंजें; 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 

कमांड कमांड प्रदर्शित करता है यदि दोनों फाइलों में समान रेखा बराबर होती है।

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 कार्यक्रम का उपयोग करता है। निम्न आदेश फ़ाइल संख्या 1 से फ़ाइल 2 और फ़ाइल 2 के बीच अंतर को दिखाता है:

diff -U 0 file1 file2 | filterdiff --lines j-k 
संबंधित मुद्दे