Cara menggabungkan dua file baris demi baris di Bash

178

Saya memiliki dua file teks, masing-masing berisi informasi berdasarkan baris seperti itu

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

Saya ingin menggabungkan file-file ini baris demi baris menggunakan skrip bash untuk mendapatkan:

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

Bagaimana ini bisa dilakukan di Bash?

semteu
sumber

Jawaban:

272

Anda bisa menggunakan paste:

paste file1.txt file2.txt > fileresults.txt
Mark Byers
sumber
Bagaimana cara kerjanya jika saya ingin menggunakan pembatas?
Teja
8
@SOaddictpaste -d "\n" * > results.txt
Ostap Maliuvanchuk
pasteakan memisahkan setiap kolom dengan tab kecuali Anda menimpa dengan -dpilihan, sehingga Anda dapat menggunakan sesuatu seperti awk, sed, dll ... untuk memformat setiap baris. Contoh: paste file1.txt file2.txt | awk '{printf "%-61s | %s\n", $1,$2}'... ini meniru diff --side-by-sideoutput)
Yzmir Ramirez
Jawaban yang bagus Gunakan alat yang dibuat untuk pekerjaan itu!
Tony
4
paste -d ""untuk menyatukan garis tanpa pembatas, ruang
Victoria Stuart
20

inilah metode tanpa tempel

awk

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

Pesta

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

Coba ikuti.

pr -tmJ a.txt b.txt > c.txt
vtha
sumber
1
Juga, gunakan opsi -s jika Anda ingin mengubah pemisah. (+1)
user.friendly
opsi J tidak bekerja di macOS Mojave tetapi perintah Anda tidak sempurna. Terima kasih.
Bebek
8

Memeriksa

man paste

mungkin diikuti oleh beberapa perintah seperti untabifyatautabs2spaces

Christopher Creutzig
sumber
Mx replace-string di Emacs akan mengeluarkan tab, mungkin Vim dan mungkin beberapa editor teks lain juga bisa melakukannya.
Ben
7
gunakan opsi -d untuk menentukan pemisah selain tab
Pedru