मैं 2 फाइलों के बीच अंतर कैसे कर सकता हूं?


11

मेरी फ़ाइल में निम्नलिखित शामिल हैं; मोटे तौर पर:

username:username:username:username:username 

उपरोक्त पंक्ति लगभग 600 वर्णों तक जारी है।

मैं awkकमांड लाइन से भेजे गए एपीआई / HTTP अनुरोध में एक तर्क के रूप में इसका उपयोग करने के लिए कमांड का उपयोग करता हूं ।

मैं अपनी स्क्रिप्ट का उपयोग उपयोगकर्ता खातों की एक सूची प्राप्त करने के लिए कर रहा हूं, जो मुझे और हर 24 घंटे या तो, मेरी हार्ड डिस्क पर मूल सूची की तुलना नए आउटपुट यूजरनाम सूची (और गूंज रहा है, जो अब अनुसरण नहीं कर रहा है। मुझे । मुझे बैश का उपयोग करके अपने तर्क को पाश में बदलना होगा .. प्रत्येक उपयोगकर्ता नाम का परीक्षण करना।

मेरी वर्तमान स्क्रिप्ट:

user=$(awk -F: '{ print $1 }' FILE)  # Grab $User to use as an argument.  
following=$(exec CURRENT_FOLLOWERS) # Outputs the new file

echo "X amount of users are following you on 78B066B87AF16A412556458AC85EFEF66155"  

          SAVE CURRENT FOLLOWERS TO NEW A FILE.  


if [[ DIFFERENCE IS DETECTED ]] ; then    

          echo -ne "$User NO LONGER FOLLOWING YOU\r"

   else echo -ne "This user is following you still.\r"
fi

मेरा सवाल यह है कि;
मैं 2 फाइलों के बीच अंतर कैसे कर सकता हूं?


आप के बारे में पता है diff, है ना?
स्काइबा

@schaiba धन्यवाद। बस एक और मंच पर आया, महान काम करता है। मैं इससे पहले उस पर ठोकर नहीं खाई थी। मुझे उम्मीद है कि यह उत्तर अन्य सदस्यों द्वारा भविष्य के प्रश्नों के लिए उपयोगी है।
बेन

@ सचाबा इसका उत्तर भी दे सकते हैं। हालांकि खेतों में नहीं लाइनों पर काम करने से निपटने के लिए सुनिश्चित करें ।
terdon

जवाबों:


9

आप जिस उपयोगिता की तलाश कर रहे हैं, वह है diff। विवरण के लिए मैनुअल पर एक नज़र डालें।



13

उपयोगकर्ताओं की अनसुलझी सूची वाली दो फाइलों को देखते हुए, जैसे

In file1:
    userD
    user3
    userA
    user1
    userB

तथा

In file2:
    user3
    userB
    userX
    user1

फिर उपयोगकर्ताओं की एक सरल सूची प्राप्त करने के लिए, file1लेकिन file2आप ऐसा नहीं कर सकते

$ comm -23 <(sort file1) <(sort file2)
userA
userD

और इसी तरह उपयोगकर्ताओं को पाने के लिए file2लेकिन अंदर नहींfile1

$ comm -13 <(sort file1) <(sort file2)
userX

यदि सूची फ़ाइलें पहले से ही क्रमबद्ध हैं, तो इन्हें क्रमशः comm -23 file1 file2और सरल बनाया जा सकता comm -13 file1 file2है।


1
क्या commछंटाई के बिना उपयोग करना संभव है ? मेरे पाठ फ़ाइल है मूल्यों की तरह 1, 2, 01, 02, 0000, 0001, 0002, आदि का उपयोग कर sortडी-तरह होगा आदेश ...
Lanti


3

diff [options] from-file to-file

diffफाइल और टू-फाइल से दो फाइलों की सामग्री की तुलना करता है। आप उस -iविकल्प को निर्दिष्ट कर सकते हैं जो मामले में परिवर्तन की अनदेखी करता है; ऊपरी और निचले मामले के पत्रों के समकक्ष विचार करें।

अधिक जानकारी के लिए आप इस लिंक को देख सकते हैं: http://www.computerhope.com/unix/udiff.htm या आप मैनुअल पेज पर एक नज़र डाल सकते हैं।


2

आप fcयूनिक्स और लिनक्स यानी diff <file_new> <file_old>कमांड में समान विंडो को आजमा सकते हैं ।

उनके साथ +++या ---उनके सामने लाइन बदल गई है और एक के साथ नहीं +'sऔर -'sनहीं बदला है

-साइन के साथ लाइनें नई फ़ाइल से हटा दी जाती हैं, हालांकि वे पुराने संस्करण में मौजूद थीं

+साइन के साथ लाइनें नई फ़ाइल से जोड़ी जाती हैं, हालांकि वे फ़ाइल के पुराने संस्करण में मौजूद नहीं थीं

लिनक्स संकेतन

लिनक्स का उपयोग करता है > और<

>मतलब पुरानी फाइल से लाइन का <मतलब है नई फाइल से लाइन जो पुरानी फाइल में बदली जाती है


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