2015-07-14 2 views
0

У меня есть несколько файлов .dat, которые я узнаю динамически. dat файл будет иметь два столбца, разделенных запятой. Будут похожи на пары ключевых значений. Например:Поиск и объединение нескольких файлов в UNIX

File1:     
entry1,100    
entry2,200    
entry3,300 

File2:      
entry1,500     
entry3,750 

Теперь я хочу вывод как

File3:   
entry1,100,500     
entry2,200     
entry3,300,750 
+0

команда 'join' оболочки сделает эту работу за вас: http://linux.die.net/man/1/join – cnluzon

ответ

1

Предполагая, что вы хотите включить непарной строки из обоих файлов - например, entry2,200 из File2 следующая команда должна работать:

join -t, -a1 -a2 file1 file2 

-t, инструктирует присоединиться к запятой в качестве разделителя, -a1 -a2 поручает присоединиться к неоплачиваемому линуксу es из каждого файла.

+1

Обратите внимание, что 'join' требует, чтобы файлы сортировались в своих полях объединения (в этом случае первый) – Hasturkun

+0

спасибо. Он работал абсолютно нормально. –

+0

@Hasturkun ya. Я тоже это сделал. –

0

Вы можете использовать AWK, когда входные файлы уже не отсортированы:

awk 'BEGIN{FS=OFS=","} FNR==NR{a[$1]=$2; next} {print $0 (($1 in a)?OFS a[$1]:"")}' f2.dat f1.dat 
entry1,100,500 
entry2,200 
entry3,300,750 
Смежные вопросы