2012-05-03 28 views

Trả lời

9

Để diff các dòng k đầu tiên của hai tập tin:

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

Tương tự, để diff k cuối cùng dòng:

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

để dòng diff i tới j:

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

'p' có nghĩa là gì trong' i, jp '? –

+0

'p' có nghĩa là in. – dogbane

+0

và để kiểm tra sự bình đẳng: 'nếu khác ...; sau đó echo "bằng nhau"; khác echo "không bằng nhau"; fi' –

0

lệnh dưới đây hiển thị dòng đầu tiên của cả hai tệp.

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 

Dưới đây lệnh hiển thị có nếu dòng đầu tiên trong cả hai filesare bằng nhau.

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

Giải pháp của tôi có vẻ khá cơ bản và mới bắt đầu khi so sánh với dogbane ở trên, nhưng ở đây tất cả đều giống nhau!

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

Giải pháp của tôi sử dụng chương trình filterdiff của bộ sưu tập chương trình patchutils. Lệnh sau đây cho thấy sự khác biệt giữa tệp1 và tệp2 từ số dòng j đến k:

diff -U 0 file1 file2 | filterdiff --lines j-k 
Các vấn đề liên quan