Jak połączyć dwa pliki linia po linii w Bash


178

Mam dwa pliki tekstowe, każdy z nich zawiera takie informacje w wierszach

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

Chciałbym połączyć te linie plików liniami za pomocą skryptu bash w celu uzyskania:

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

Jak można to zrobić w Bash?

Odpowiedzi:


272

Możesz użyć paste:

paste file1.txt file2.txt > fileresults.txt

Jak to działa, jeśli chcę użyć separatora?
Teja

8
@SOaddictpaste -d "\n" * > results.txt
Ostap Maliuvanchuk

pasteoddzieli każdą kolumnę z karty, jeśli nie zastępują z -dopcji, dzięki czemu można używać czegoś takiego awk, seditp ... sformatować każdą linię. Przykład: paste file1.txt file2.txt | awk '{printf "%-61s | %s\n", $1,$2}'... to naśladuje diff --side-by-sidewyjście)
Yzmir Ramirez

Świetna odpowiedź. Użyj narzędzia stworzonego do tego zadania!
Tony

4
paste -d ""do łączenia linii bez ograniczników, spacja
Victoria Stuart

20

oto metody bez wklejania

awk

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

Grzmotnąć

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

11

Spróbuj podążać.

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

1
Użyj również opcji -s, jeśli chcesz zmienić separator. (+1)
user.friendly

opcja J nie działa w systemie macOS Mojave, ale Twoje polecenie działa doskonale. Dzięki.
Duck

8

Czek

man paste

możliwe, po którym następuje polecenie, takie jak untabifylubtabs2spaces


Ciąg zastępczy Mx w Emacsie usunie tabulatory, prawdopodobnie Vim i może inne edytory tekstu też to zrobią.
Ben

7
użyj opcji -d, aby określić separator inny niż tabulator
Pedru
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.