Jest to specjalne narzędzie do że: paste
. Łączy każdą pełną linię z pierwszego pliku z odpowiednią linią z drugiego pliku; możesz usunąć niechciane kolumny przed lub po. Załóżmy na przykład, że kolumny są rozdzielane tabulatorami:
paste file1.txt file2.txt | cut -f 1,2,3,6
Oto sposób wstępnego filtrowania obu plików, który polega na podstawieniu procesu ksh / bash / zsh.
paste <(<file1.txt sed 's/[[:space:]][[:space:]]*[^[:space:]]*$//') \
<(<file1.txt sed 's/^[^[:space:]]*[[:space:]][[:space:]]*//')
Awk jest nastawiony przede wszystkim na przetwarzanie jednego pliku na raz, ale możesz zadzwonić, getline
aby czytać z innego pliku równolegle.
awk '
BEGIN {file2=ARGV[2]; ARGV[2]="";}
{$0 = $0 ORS getline(); print $1, $2, $3, $6;}
' file1.txt file2.txt
Do tej pory zakładałem, że chcesz dopasować wiersz 1 pliku 1 do wiersza 1 pliku 2, wiersz 2 pliku 1 z wierszem 2 pliku 2 itd. Jeśli chcesz dopasować zawartość kolumny, jest to zupełnie inna sprawa. join
wykona zadanie pod warunkiem, że kolumna, którą chcesz dopasować, jest posortowana.
pr -m -t -s\ File1.txt File2.txt | gawk '{print $1,$2,$3, $6}' > File3.txt