awk - сравните файлы и распечатайте строки из обоих файлов

Я ищу способ сравнить столбец 2$ и столбец 1$ из двух файлов и если они - то же, чем печать все столбцы из первого файла со столбцом 2$ из второго файла.

file_1.txt

apple    tree    5
great    see     10
see      apple   3
tree     bee     11
make     change  2

file_2.txt

apple    5.21      
around   6.21      
great    2         
bee      1         
see      7.43      
tree     3         

Вывод должен быть похожим:

apple    tree    5    3     
great    see     10   7.43
see      apple   3    5.21
tree     bee     11   1   

Я попробовал

awk 'NR==FNR{a[$2];next} ($1 in a) {print}' file_1.txt file_2.txt > output.txt

который, очевидно, просто печатает согласующие отрезки длинной линии file_2.txt. Таким образом, как я добавляю оператор печати для столбцов 1-го файла?

Я пытался читать в большем количестве столбцов в массиве как

awk 'NR==FNR{a[$2];b[$1];c[$3];next} ($1 in a) {print a, b c}' file_1.txt      file_2.txt > output.txt

который является, очевидно, неправильным ;)

Справка очень ценится.

0
задан 17 February 2017 в 14:20

1 ответ

Как насчет

$ awk 'NR==FNR {a[$1]=$2; next} $2 in a {print $0, a[$2]}' OFS='\t' file_2.txt file_1.txt 
apple  tree   5   3
great  see    10  7.43
see    apple  3   5.21
tree   bee    11  1
2
ответ дан 27 September 2019 в 11:24

Другие вопросы по тегам:

Похожие вопросы: