ฉัน diff-ed 2 ไฟล์และได้รับ
1c1
< 1
---
> 1
ทั้งสองไฟล์มีเพียง "1" สิ่งนี้แตกต่างกันอย่างไร
-u
ตัวเลือกอาจอ่านง่ายขึ้น
cp 1 2
(เขียนทับ 2) จากนั้นคุณสามารถมั่นใจได้ 100% b เหมือนกัน;)
vimdiff file1 file2
? : D
ฉัน diff-ed 2 ไฟล์และได้รับ
1c1
< 1
---
> 1
ทั้งสองไฟล์มีเพียง "1" สิ่งนี้แตกต่างกันอย่างไร
-u
ตัวเลือกอาจอ่านง่ายขึ้น
cp 1 2
(เขียนทับ 2) จากนั้นคุณสามารถมั่นใจได้ 100% b เหมือนกัน;)
vimdiff file1 file2
? : D
คำตอบ:
บรรทัดที่ 1: a
หมายถึงการเพิ่มd
การลบและc
การเปลี่ยนแปลง หมายเลขบรรทัดของไฟล์ต้นฉบับจะปรากฏก่อนตัวอักษรเหล่านี้และหมายเลขของไฟล์ที่แก้ไขจะปรากฏขึ้นหลังตัวอักษร
บรรทัดที่ 2: บรรทัด<
ที่มาจากไฟล์ 1 และแตกต่างจากไฟล์ 2
บรรทัดที่ 3 คือตัวแบ่ง
บรรทัดที่ 4: บรรทัด>
ที่มาจากไฟล์ 2 และแตกต่างจากไฟล์ 1
(หากคุณเคยเห็น=
หมายความว่าบรรทัดทั้งสองเหมือนกัน)
และปัญหาของคุณอาจเป็นช่องว่างหรือตัวละครอื่น ๆ ที่ไม่ใช่มนุษย์: สิ่งเหล่านั้นก็ก่อให้เกิดความแตกต่างเช่นกัน
มีบางตัวเลือกในการจัดการกับเอาต์พุต
ตัวอย่าง:
rinzwind @ discworld: ~ $ มากกว่า 1 ทดสอบ test2 test3 rinzwind @ discworld: ~ $ มากกว่า 2 ทดสอบ test2 test3
รูปแบบบริบท:
rinzwind @ discworld: ~ $ diff -c 1 2 *** 1 2011-08-13 17: 05: 40.433966684 +0200 --- 2 2011-08-13 17: 11: 24.369966629 +0200 *************** *** 1,3 **** ทดสอบ ! test2 test3 --- 1,3 ---- ทดสอบ ! test2 test3
A "!" แสดงให้เห็นถึงการเปลี่ยนแปลงระหว่างบรรทัดที่สอดคล้องในสองไฟล์ A "+" หมายถึงการเพิ่มบรรทัดในขณะที่พื้นที่ว่างหมายถึงบรรทัดที่ไม่เปลี่ยนแปลง ที่จุดเริ่มต้นของแพทช์เป็นข้อมูลไฟล์รวมถึงเส้นทางแบบเต็มและการประทับเวลา ที่จุดเริ่มต้นของแต่ละก้อนคือหมายเลขบรรทัดที่ใช้สำหรับการเปลี่ยนแปลงที่สอดคล้องกันในไฟล์ ช่วงจำนวนที่ปรากฏระหว่างชุดของสามดอกจันจะมีผลกับไฟล์ต้นฉบับในขณะที่ชุดของสามขีดกลางจะใช้กับไฟล์ใหม่ ช่วงก้อนใหญ่ระบุหมายเลขบรรทัดเริ่มต้นและจุดสิ้นสุดในไฟล์ที่เกี่ยวข้อง
การขยายความคิดเห็นของ Lekensteyn เกี่ยวกับรูปแบบรวม:
rinzwind @ discworld: ~ $ diff -u 1 2 --- 1 2011-08-13 17: 05: 40.433966684 +0200 +++ 2 2011-08-13 17: 11: 24.369966629 +0200 @@ -1,3 +1,3 @@ ทดสอบ -test2 + test2 test3
รูปแบบเริ่มต้นด้วยส่วนหัวสองบรรทัดเดียวกันกับรูปแบบบริบทยกเว้นว่าไฟล์ต้นฉบับจะนำหน้าด้วย "---" และไฟล์ใหม่จะนำหน้าด้วย "+++" ต่อไปนี้เป็นหนึ่ง hunks การเปลี่ยนแปลงที่มีความแตกต่างของบรรทัดในไฟล์ บรรทัดบริบทที่ไม่เปลี่ยนแปลงจะถูกนำหน้าด้วยอักขระเว้นวรรคบรรทัดการเพิ่มจะถูกนำหน้าด้วยเครื่องหมายบวกและบรรทัดการลบจะถูกนำหน้าด้วยเครื่องหมายลบ
ตัวเลือกที่มีประโยชน์:
-b
ดูรายละเอียดการเปลี่ยนแปลงในพื้นที่สีขาว
-w
ดูรายละเอียดพื้นที่สีขาวทั้งหมด
-B
ละเว้นบรรทัดว่างทั้งหมด
-y
เอาต์พุตใน 2 colums
man diff
;))
od -x1z
ทั้งไฟล์และเปรียบเทียบod
ผลลัพธ์ ควรค้นหาความแตกต่างที่ซ่อนอยู่ระหว่างไฟล์
ฉันพบว่าod (octal dump) มีประโยชน์เมื่อเปรียบเทียบไฟล์ที่มีอักขระที่ไม่สามารถพิมพ์ได้ (โดยเฉพาะไฟล์ที่ diff ต่างกันคือ "ไบนารี่" และบอกคุณว่าพวกมันต่างกัน)
ในตัวอย่างด้านล่างฉันสร้างคู่ของไฟล์ที่อาจเหมือนไฟล์ต้นฉบับจากนั้นทำส่วนต่างกับเอาต์พุตต้นฉบับ ต่อไปฉันจะทำอย่างไรกับเอาต์พุต "od" ที่ต่างกัน
$ echo 1> 1
$ echo "1"> 2
$ diff 1 2
1c1
< 1
- ---
> 1
$ od -c 1> 1.od
$ od -c 2> 2.od
$ diff 1.od 2.od
1,2c1,2
< 0000000 1 \n
< 0000002
---
> 0000000 1 \n
> 0000003
$ od -Ax -c -t x1 1> 1.od
$ od -Ax -c -t x1 2> 2.od
$ diff 1.od 2.od
1,3c1,3
< 000000 1 \n
< 31 0a
< 000002
---
> 000000 1 \n
> 31 20 0a
> 000003
ฉันมีปัญหาเดียวกันและฉันพบวิธีแก้ไขปัญหาที่อาจช่วยได้ให้ใช้คำสั่ง:
dos2unix
<file1> <file2>
หนึ่งในนั้นอาจอยู่ในรูปแบบ dos / windows และอีกหนึ่งรูปแบบของ UNIX
หลังจากฉันทำสิ่งนี้ความแตกต่างก็ดีทั้งหมด!
ไม่แน่ใจว่าสิ่งนี้ช่วยในการค้นหาอักขระช่องว่างได้ยากหรือไม่ แต่มีประโยชน์สำหรับการกระจาย: http://www.gnu.org/software/wdiff/
http://www.gnu.org/software/diffutils/manual/html_node/Detailed-Unified.html#Detailed-Unified
ลิงก์ด้านบนให้คำอธิบายที่กระชับและชัดเจนยิ่งขึ้น