GNU coreutils включает команду join
это делает точно, что Вы хотите, если сортировка строки в результате не важна:
join <(sort file1) <(sort file2)
A 1 9
B 3 3
C 1 2
Если Вы хотите вкладки назад, сделайте:
join <(sort file1) <(sort file2) | tr ' ' '\t'
A 1 9
B 3 3
C 1 2
Или используйте t
опция к join
.
(<()
иначе замена процесса, требует ksh93 (где функция, порожденная в), удар или zsh),
ire@localhost: sort -k1 file2 | join file1 -
A 1 9
B 3 3
C 1 2
Если Вы хотите вкладки в выводе, то сделайте
sort -k1 file2 | join -t " " file1 -
где можно создать вкладку в кавычках путем нажатия CTRL-V <tab>
.
Если Вы не хотите отсортированного вывода, но вместо этого имеете тот же порядок, как file2, awk является хорошим инструментом для использования:
awk '
NR == FNR {val[$1]=$2; next}
$1 in val {print $1, val[$1], $2}
' file1 file2