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


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.