awk - сравнение 2 столбцов из 2 файлов и печатает общие строки

Я знаю, что существуют мои из тех же вопросов, уже ответил на этой платформе, но я попробовал все решения в течение нескольких часов, и я не могу найти свою ошибку. Таким образом, я ценил бы любую подсказку или справку для того, что я делаю неправильно.

Как здесь https://unix.stackexchange.com/questions/216511/comparing-the-first-column-of-two-files-and-printing-the-entire-row-of-the-secon и здесь как я могу сравнить данные в 2 файлах для идентификации общих и уникальных данных? У меня есть два файла, из которых мне нравится отфильтровывать строки файла 2, которые соответствуют столбцу 1 в файле 1. По-моему, предлагаемое решение для тех же вопросов должно работать, но к сожалению они не делают. Мои файлы разделяются от вкладки.

file_1.txt

apple
great
see
tree

file_2.txt

apple    5.21      Noun
around   6.21      Adverb
great    2         Adjective
bee      1         Noun
see      7.43      Verb
tree     3         Noun

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

apple    5.21      Noun
great    2         Adjective
see      7.43      Verb
tree     3         Noun

Я попробовал коммуникацию-12,

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

Я знаю, что это могло бы быть глупым вопросом, я приношу извинения заранее. Однако я, кажется, не могу понять это.

1
задан 13 April 2017 в 15:37

1 ответ

Один способ сделать это был бы похож на это:

awk '   BEGIN { while ((getline <"file2.txt") > 0) {REC[$1]=$0}}
    {print REC[$1]}' <file1.txt

getline в запуске читает file2.txt и хранит его в массиве REC, индексированный первой записью.

"Основной" раздел кода затем читает содержание file1.txt и просто использует первое слово на строке для поиска соответствующей строки из file2.txt, теперь сохраненного в REC.

Пример произвел:

apple    5.21      Noun
great    2         Adjective
see      7.43      Verb
tree     3         Noun 
3
ответ дан 7 December 2019 в 12:35

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

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