Bunun için özel bir alet var: paste
. İlk dosyadaki her tam satırı, ikinci dosyadaki karşılık gelen satırla birleştirir; istenmeyen sütunları önce veya sonra kaldırabilirsiniz. Örneğin, sütunlarınızın sekmeyle ayrılmış olduğunu varsayarsak:
paste file1.txt file2.txt | cut -f 1,2,3,6
Burada, ksh / bash / zsh işlem ikamesine dayanan her iki dosyayı önceden filtrelemenin bir yolu vardır.
paste <(<file1.txt sed 's/[[:space:]][[:space:]]*[^[:space:]]*$//') \
<(<file1.txt sed 's/^[^[:space:]]*[[:space:]][[:space:]]*//')
Awk öncelikle tek seferde bir dosyayı işlemeye yöneliktir, ancak getline
paralel olarak başka bir dosyadan okumaya çağrı yapabilirsiniz .
awk '
BEGIN {file2=ARGV[2]; ARGV[2]="";}
{$0 = $0 ORS getline(); print $1, $2, $3, $6;}
' file1.txt file2.txt
Şimdiye kadar, dosya 1'in satır 1'ini dosya 2'nin satır 1'i, dosya 1'in satır 2'sini dosya 2'nin satır 2'si ile eşleştirmek istediğinizi varsaydım. Bir sütunun içeriğini eşleştirmek istiyorsanız, bu bir tamamen farklı bir konu. join
eşleştirmek istediğiniz sütunun sıralanması koşuluyla işi yapar.
pr -m -t -s\ File1.txt File2.txt | gawk '{print $1,$2,$3, $6}' > File3.txt