2014-09-17 4 views
-1

У меня есть два файласравнить два файла в Баш с подстроки

tmp1.txt

aaa.bbbbb.txt 
bbb.aaaaa.txt 
ddd.bbbbbb.txt 
mmm.cccccc.txt 

tmp2.txt

aaa first 
bbb second 
ccc third 
ddd fourth 
eee fifth 
fff sixth 

Я хочу, чтобы сравнить эти два файла tmp1.txt и tmp2 .txt, так что сначала он использует что-либо перед первым «.». т.е. ааа, ГЭБ, ссс, ддд и поиск, что в tmp2.txt, и если он находит спички дисплеи

aaa.bbbbb.txt first 
bbb.aaaaa.txt second 
ddd.bbbbbb.txt fourth 

Благодарности

+0

все, что вы уже пробовали? – Erik

+4

Особенно после того, как вы [разместили это] (http://stackoverflow.com/questions/25894094/compare-two-files-in-bash), вы можете показать свой собственный сценарий. – anubhava

ответ

3

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

awk 'NR==FNR{a[$1]=$2; next}$1 in a{print $0,a[$1]}' tmp2.txt FS=\. tmp1.txt 
aaa.bbbbb.txt first 
bbb.aaaaa.txt second 
ddd.bbbbbb.txt fourth 

Используйте разделитель полей FS в конец будет влиять на файл, который следует за ним.

+1

+1 Я собирался опубликовать что-то очень похожее, но установка 'FS' между файлами - это что-то новое –

+1

@TomFenech Спасибо за редактирование. Вот [ссылка] (https://www.gnu.org/software/gawk/manual/html_node/Other-Arguments.html#Other-Arguments), но я буду честен, я не знал об этом ни пока я не увидел [Эд Мортон] (http://stackoverflow.com/a/24517482/970195), используйте его в одном из своих ответов. –

+1

Почему я не удивлен, что Эд имел к этому какое-то отношение :) –