LINUX.ORG.RU

Объединение файлов по общей подстроке

 


0

2

Доброго времени суток! Помогите, пожалуйста, решить следующую задачу:

Есть 2 файла вида:
1 файл:
Ivan
Anna
Vladimir

2 файл:
123 Anna lives in Moskow
234 Ivan lives in Kaluga
890 Vladimir lives in Moskow
345 Anton lives in Kaluga

нужно получить следующие строки:
123 anna lives in Moskow
234 ivan lives in Kaluga
890 vladimir lives in Moskow

То есть для каждого слова в первом файле найти строку во втором и вывести ее.

Если файл 2 большой, то можно ещё так.

grep -E "^[0-9]+ (`cat 1 | tr '\n' '|' | sed 's~|$~~' `)" 2

backbone ★★★★★
()
Последнее исправление: backbone (всего исправлений: 2)
Ответ на: комментарий от Skolotovich

А если во втором файле есть несколько строк, содержащих слова из первого, то как вывести только первое вхождение (сохранив в отдельный файл 4 слово стоки)?
Пробовала так:

for w in $(cat one.txt); do
   grep $w second.txt | head -1 | awk {print $4}
done
Но так выводит только одно нужное слово для произвольной записи в первом файле.

mmm-crash
() автор топика
Ответ на: комментарий от mmm-crash

А если во втором файле есть несколько строк, содержащих слова из первого, то как вывести только первое вхождение

grep -m 1

ABW ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.