कैसे बैश में लाइन द्वारा दो फाइल लाइन मर्ज करें


178

मेरे पास दो पाठ फाइलें हैं, उनमें से प्रत्येक में इस तरह की लाइन द्वारा एक जानकारी है

file1.txt            file2.txt
----------           ---------
linef11              linef21
linef12              linef22
linef13              linef23
 .                    .
 .                    .
 .                    .

मैं प्राप्त करने के लिए एक bash स्क्रिप्ट का उपयोग करके लाइनों के द्वारा फाइल लाइनों को मर्ज करना चाहूंगा:

fileresult.txt
--------------
linef11     linef21
linef12     linef22
linef13     linef23
 .           .
 .           .
 .           .

यह बश में कैसे किया जा सकता है?

जवाबों:


272

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

paste file1.txt file2.txt > fileresults.txt

अगर मैं एक सीमांकक का उपयोग करना चाहूंगा तो यह कैसे काम करेगा?
तेजा

8
@ सोसडिटpaste -d "\n" * > results.txt
ओस्टाप मालीउवानचुक

pasteटैब के साथ प्रत्येक स्तंभ अलग कर देगा, जब तक आप के साथ ओवरराइड -dविकल्प है, तो आप की तरह कुछ का उपयोग कर सकते awk, sed, आदि ... प्रत्येक पंक्ति फ़ॉर्मेट करने के लिए। उदाहरण: paste file1.txt file2.txt | awk '{printf "%-61s | %s\n", $1,$2}'... यह diff --side-by-sideउत्पादन की नकल करता है)
यज़्मीर रामिरेज़

बहुत बढ़िया जवाब। नौकरी के लिए बने टूल का इस्तेमाल करें!
टोनी

4
paste -d ""डेलिमीटर, स्पेस के बिना लाइनों को समतल करने के लिए
विक्टोरिया स्टुअर्ट

20

यहाँ गैर-पेस्ट तरीके हैं

awk

awk 'BEGIN {OFS=" "}{
  getline line < "file2"
  print $0,line
} ' file1

दे घुमा के

exec 6<"file2"
while read -r line
do
    read -r f2line <&6
    echo "${line}${f2line}"
done <"file1"
exec 6<&-

11

निम्नलिखित का प्रयास करें।

pr -tmJ a.txt b.txt > c.txt

1
यदि आप विभाजक को बदलना चाहते हैं, तो भी -s विकल्प का उपयोग करें। (+1)
user.friendly

J ऑप्शन macOS Mojave पर काम नहीं करता है लेकिन आपकी कमांड पूरी तरह से काम करती है। धन्यवाद।
डक

8

जाँच

man paste

कुछ आदेश जैसे untabifyया उसके बाद संभवtabs2spaces


Emacs में Mx रिप्लेसमेंट-स्ट्रिंग टैब निकालेंगे, संभवतः Vim और शायद कुछ अन्य टेक्स्ट एडिटर भी कर सकते हैं।
बेन

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