Сравните поля двух файлов

У меня есть два файла как это:

Файл 1

apple fruit 10 4
strawberry fruit 22 11
berry fruit 33 33
ball toy 1 12
straw thing 2 33

Файл 2

strawberry straw berry
rawberry raw berry

Я хочу сравнить столбец 1 файла 2 со столбцом 1 файла 1, столбцом 2 файла 2 со столбцом 1 файла 1, столбцом 3 файла 2 со столбцом 1 файла 1. Если соответствие найдено, я хочу отобразить все три согласующих отрезка длинной линии из файла 1.

Здесь, вывод должен быть:

strawberry fruit 22 11
straw thing 2 33
berry fruit 33 33

Как я могу сделать этот Unix использования команды на терминале?

1
задан 10 November 2016 в 13:44

3 ответа

Можно попробовать grep -Ff File2 File1

, Где,-f File2 читает шаблоны из File2, и-F рассматривает шаблоны как фиксированные строки

0
ответ дан 7 December 2019 в 15:45

Базирующийся в предложении Arijit Chatterjee, я предлагаю

grep -Ff <(tr -s " " "\n" < file2) file1

, Где tr -s " " "\n" преобразовывает file2 во вход one-word-per-line, лучше адаптированный к grep -Ff

1
ответ дан 7 December 2019 в 15:45

Используя awk, Вы могли поместить все слова File2 в ассоциативный массив и затем проверить поле 1 File2 для членства:

awk 'NR==FNR {for(i=1;i<=NF;i++) a[$i]++; next} $1 in a' File2 File1
strawberry fruit 22 11
berry fruit 33 33
straw thing 2 33

аналогичное решение А могло быть реализовано с помощью хеша в perl

0
ответ дан 7 December 2019 в 15:45

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

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