как извлечь некоторые строки в файл данных по сравнению с другим файлом данных? (слияние)

У меня есть два разных файла:

first file: id1 19501112 id2 19831207 1d4 20001212 id6 20000101 id10 20061213 id11 20081212 id12 20100109 id13 20101218 id14 20101212 id15 20111111 id16 20150919 id20 20141415 

и второй файл:

 id100 id2 id4 id44 id10 id16 id2000 id34 id5 id7 

поэтому я хочу извлечь эти строки в файле 1, идентификаторы которого совпадают с идентификаторами во втором файле. поэтому я хочу, чтобы мой выходной файл выглядел так:

 id2 19831207 1d4 20001212 id10 20061213 id16 20150919 

любое предложение, пожалуйста?

Использование GNU grep:

 grep -w -f file2.txt file1.txt 

Это говорит grep чтобы соответствовать только целым «словам», и получить список шаблонов для поиска из файла file2.txt

Если есть вероятность, что содержимое файла file2.txt может появиться в остальной части строк в файле file1.txt, вы можете использовать подстановку процессов sed и bash так:

 grep -f <(sed -e 's/^/^/ ; s/$/\\b/' file2.txt) file1.txt 

Это использует sed, чтобы преобразовать каждую строку idN в ^idN\b прежде чем использовать ее в grep -f .