Объединить два файла

У меня есть файл file1.txt

deiauk 9 kespaul 8 luktol 7 titkur 6 

и другие файлы file2.txt

 kespaul b deiauk a 

И я хочу объединить оба файла в одном по первому значению, поэтому мой результат должен быть

 deiauk 9 a kespaul 8 b luktol 7 titkur 6 

 sort file2.txt | join -a 1 file1.txt - 

join требует отсортированного ввода. Параметр «-» указывает, что для второго файла будет использоваться стандартный ввод, который позволяет использовать вывод сортировки для ввода. Параметр «-a 1» указывает, что в вывод будут включены несогласованные строки из первого файла.

Вы можете использовать команду join (будет полезно отсортировать файлы)

 join file1.txt file2.txt -a 1 

Файлы должны быть отсортированы, так что вот все на одной строке.

 sort file1.txt > f1s ; sort file2.txt >f2s ; join -1 1 -2 1 -a 1 -a 2 f1s f2s ; rm f1s f2s 

С awk вы можете делать:

 awk ' NR==FNR { k[$1]=$2; next } { print $0, k[$1] } ' file2.txt file1.txt 

Примечание. Это awk решение также работает с несортированными исходными исходными данными; нет необходимости в дополнительных дорогостоящих процессах.