एक लंबी एक पंक्ति फ़ाइल में अंतर का उपयोग करना


25

मेरे पास एक फाइल है जिसमें केवल एक लाइन है। इसका आकार लगभग 20,000 बाइट्स है।

फ़ाइल को संशोधित किया गया है, और मैं जानना चाहता था कि कहां।

मैंने सोचा था कि अंतर का उपयोग करना, लेकिन यह मुझे पूरी लाइन दिखाता है, क्योंकि यह उस रेखा को आउटपुट करता है जिसमें अंतर होता है - लेकिन इस मामले में यह फ़ाइल में एकमात्र रेखा है जिसमें अंतर है।

इसलिए मैं देखना चाहता था कि क्या अंतर है।

कोई सुझाव?



2
क्या आपने इसे fmt करने के लिए पाइप करने की कोशिश की है (यदि आप पाठ्यक्रम का उपयोग कर रहे हैं) तो आप "fmt -w 50 long.txt। diff" कर सकते हैं
l1zard

जवाबों:


13

यह मानते हुए कि कई व्हाट्सएप हैं, जैसे कि सामान्य पाठ में, आप फाइल को शब्दों से विभाजित कर सकते हैं और इसकी तुलना एक सामान्य डिफरेंशियल टूल से कर सकते हैं, उदाहरण के लिए, मेल्ड:

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

2
मेरे लिए सबसे सीधा उपाय लगता है। अपने आप में भिन्न समस्या तुच्छ है, हालाँकि अधिकांश उपकरण (केवल भिन्न-उपकरण नहीं हैं) लंबी रेखाओं का प्रबंधन नहीं कर सकते हैं, इसलिए समस्या w / लंबी पंक्तियों से निपट रही है, न कि स्वयं ही।
p1100i

4

मुझे एक अंतर मिलेगा जो इंट्रा-लाइन भिन्न करता है। मैं UNIX पर xxdiff का उपयोग करता हूं । मुझे लगता है कि WinMerge विंडोज पर इंट्रा-लाइन अलग है।

अन्य उत्तर भी अच्छे हैं: wdiff, या विखंडू में विखंडन - अगर एक पाइप या अल्पविराम द्वारा डेटा को सीमांकित किया जाता है, तो यह निर्धारित करने के लिए चंक सीमाएं आसान हैं।


1
FYI करें, xxdiff segfaults यदि लाइनें 32768 वर्णों से अधिक लंबी हों ...
ValarDohaeris

3

यदि यह एक बार की समस्या है, तो मैं \nहर 50 वर्णों में सम्मिलित वर्णों वाली फ़ाइलों की प्रतियां बनाऊंगा, फिर उन प्रतियों को अलग कर दूंगा। (मैंने 50 को चुना क्योंकि यह मूल फ़ाइलों में अलग-अलग लाइन नंबर से बाइट ऑफ़सेट तक जाने में गणित को आसान बनाता है लेकिन जो मैंने पाया उसके आधार पर इसे ऊपर / नीचे समायोजित कर सकता है।)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.