การใช้ diff กับไฟล์บรรทัดยาวหนึ่งไฟล์


25

ฉันมีไฟล์ที่มีเพียงหนึ่งบรรทัด ขนาดของมันคือประมาณ 20,000 ไบต์

ไฟล์ได้รับการแก้ไขและฉันต้องการทราบว่าอยู่ที่ไหน

ฉันคิดว่าใช้ diff แต่มันแสดงให้ฉันเห็นเส้นที่สมบูรณ์เพราะมันจะออกมาเป็นเส้นที่มีความแตกต่าง - แต่ในกรณีนี้มันเป็นบรรทัดเดียวในไฟล์ที่มีความแตกต่าง

ดังนั้นฉันอยากเห็นว่าอะไรคือความแตกต่าง

คำแนะนำใด ๆ?



2
คุณได้ลองไปที่ fmt (ถ้าคุณใช้ linux แน่นอน) คุณสามารถทำ "fmt -w 50 long.txt | diff"
l1zard

คำตอบ:


13

สมมติว่ามี whitespaces จำนวนมากเช่นเดียวกับในข้อความปกติคุณสามารถแยกไฟล์ด้วยคำและเปรียบเทียบกับเครื่องมือ diff ทั่วไปตัวอย่างเช่น meld:

tr -s ' ' '\n' < file1.txt > file1.txt.split
tr -s ' ' '\n' < file2.txt > file2.txt.split
meld file1.txt.split file2.txt.split

2
ดูเหมือนจะเป็นทางออกที่ตรงไปตรงมาที่สุดสำหรับฉัน ปัญหาต่าง ๆ ในตัวมันเองเป็นเรื่องเล็กน้อย แต่เครื่องมือส่วนใหญ่ (ไม่ใช่แค่เครื่องมือต่าง ๆ ) ไม่สามารถจัดการสายยาวได้ดังนั้นปัญหาก็คือการจัดการกับเส้นยาว / ยาวไม่ใช่การกระจายตัว
p1100i

4

ฉันพบความแตกต่างที่ทำให้เกิดความแตกต่างภายใน ฉันใช้xxdiffบน UNIX ฉันคิดว่าWinMergeทำ intra-line ต่างบน Windows

คำตอบอื่น ๆ ก็ดีเช่นกัน: wdiff หรือแบ่งเป็นส่วน ๆ - ขอบเขตของกลุ่มจะง่ายต่อการกำหนดถ้าข้อมูลถูกคั่นด้วยการพูดไปป์หรือเครื่องหมายจุลภาค


1
FYI, xxdiff segfaultsถ้าเส้นยาวกว่า 32768 ตัวอักษร ...
ValarDohaeris

3

หากนี่เป็นปัญหาเพียงครั้งเดียวฉันจะสร้างสำเนาของไฟล์ที่มี\nตัวอักษรแทรกทุก 50 ตัวอักษรจากนั้นคัดลอกสำเนาเหล่านั้น (ฉันเลือก 50 เพราะมันทำให้การคำนวณง่ายขึ้นจากการแตกต่างของหมายเลขบรรทัดไปเป็นไบต์ออฟเซ็ตในไฟล์ต้นฉบับ แต่อาจปรับขึ้น / ลงตามสิ่งที่ฉันพบ)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.