बैश में दो फाइलों के प्रमुखों की तुलना करें


11

मैं diff filea filebफाइलों में अंतर देखने के लिए कर सकता हूं । मैं head -1 fileaफ़िलिया या फ़ाइलब की पहली पंक्ति देखने के लिए भी कर सकता हूँ । फिल्मा की पहली लाइन और फाइलब की पहली लाइन के बीच अंतर दिखाने के लिए मैं इन कमांड को कैसे जोड़ सकता हूं?

जवाबों:


22

यदि आपका शेल प्रक्रिया प्रतिस्थापन का समर्थन करता है , तो प्रयास करें:

diff <(head -n 1 filea) <(head -n 1 fileb)

मैंने पहले ही प्रक्रिया सबस्टेशन कमांड को कहीं देखा था, लेकिन यह नहीं पता था कि यह क्या किया था। धन्यवाद !
edi9999

6

यदि आप केवल प्रत्येक फ़ाइल की पहली पंक्ति की तुलना कर रहे हैं, तो शायद आप लाइन के भीतर शब्द-स्तर के परिवर्तनों की परवाह करते हैं dwdiff:

dwdiff <(head -n 1 filea) <(head -n 1 fileb)

dwdiffकुछ अच्छे विकल्प हैं, जैसे -cबदले हुए शब्दों को चित्रित करना।

या, sedसिर के बजाय का उपयोग कर :

dwdiff <(sed 1q filea) <(sed 1q fileb)

जो सिर के लिए मैनुअल सुझाव देता है वह सिर से अधिक पोर्टेबल है, क्योंकि समय के साथ सिर के लिए वाक्यविन्यास बदल गया हैhead -1 बनामhead -n 1

इसके अलावा, आप थोड़े कम टाइपिंग के साथ बदलावों पर नज़र रख सकते हैं:

head -n1 -q filea fileb

जो आसान दृश्य तुलना के लिए दो लाइनों को प्रदर्शित करता है, एक के नीचे एक।


0

आप उपयोग कर सकते हैं:

if [ "`head -1 file1`" == "`head -1 file2`" ]; then echo "the same"; fi

2
ध्यान दें कि यह "वही" उत्तर देगा यदि file1 एक खाली फ़ाइल है (या पठनीय नहीं है) और file2 की पहली पंक्ति खाली है।
स्टीफन चेजलस

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