Объединение двух файлов в столбцы

Я хочу добавить 6 полей File2 в последнее поле File1, я использую следующую команду, но не могу получить выход.

awk 'FNR==NR{a[$1]=$6; next} {print $0,a[$1]}' File2 File1

File1:

 zehriscollection.co.uk,IPAddress,hqfmqxvm,noor82@gmail.com,2015-06-06 16:34,home,8000,4,Professional Linux Based,paper_lantern,root,Hostname,1433590496,4212,8192000 zindagidesire.com,IPAddress,hgchcjhcj,saeed@gmail.com,2015-08-19 18:16,home,8000,107,Professional Linux Based,paper_lantern,root,Hostname,1439990214,110126,8192000 zobasra.co.uk,IPAddress,egranius,"donot@hotmail.com, w@live.com",2013-11-30 19:07,home,3072,4,Standard,x3,root,Hostname,1385820470,4208,3145728 

File2:

 zehriscollection.co.uk hqfmqxvm Usage: 4.02M Inodes: 275 zindagidesire.com hgchcjhcj Usage: 107.19M Inodes: 4765 zobasra.co.uk egranius Usage: 4.02M Inodes: 390 

Что я хочу получить:

 zehriscollection.co.uk,IPAddress,hqfmqxvm,noor82@gmail.com,2015-06-06 16:34,home,8000,4,Professional Linux Based,paper_lantern,root,Hostname,1433590496,4212,8192000,275 zindagidesire.com,IPAddress,hgchcjhcj,saeed@gmail.com,2015-08-19 18:16,home,8000,107,Professional Linux Based,paper_lantern,root,Hostname,1439990214,110126,8192000,4765 zobasra.co.uk,IPAddress,egranius,"donot@hotmail.com, w@live.com",2013-11-30 19:07,home,3072,4,Standard,x3,root,Hostname,1385820470,4208,3145728,390 

2 Solutions collect form web for “Объединение двух файлов в столбцы”

Это делает работу:

 awk '{print $6}' File2 | paste -d ',' File1 - 

В конце – стандартный ввод, который подается через awk.

EDIT: когда вам нужно убедиться, что имена доменов совпадают в файлах, вы можете сделать это с помощью join вместо paste .

Например, например:

 sort File2 | awk '{print $1,",",$6}' | sed 's/ //g' | join -t ',' File1 - 

Один из способов использования функции split :

 awk 'FNR==NR{a[$1]=$6; next} {split($0, b, ","); u=b[1]; if (u in a) {$0=$0","a[u]}} 1' file2 file1 

Он сохраняет 6-е поле из file2 в a[1st field] затем для каждой строки file1 он разбивает его на запятую на массив b и присваивает первому элементу b[1] значение u . Если u находится в a он добавляет к строке запятую и a[u] . Финал 1 печатает каждую строку file1 , был ли он изменен или нет.

  • awk удаляет строки на основе другого значения столбца
  • awk - читать программу И ввод со стандартного ввода?
  • Awk сравнивает 2 файла, распечатывает совпадение вместе с несоответствующими строками, заполненными 0
  • Как рассчитать (взвешенное) большинство по столбцам?
  • Как использовать Awk для печати между двумя позиционными параметрами
  • Как запустить grep в одном столбце?
  • Объединение Awk с Curl
  • Используйте SED или AWK для перемещения строки в новый столбец и строку
  • Как добавить числовой порядок имен файлов Zsh / AWK / ...?
  • максимум столбца с совпадающим идентификатором
  • Regex не работает с grep
  • Хотите напечатать NULL, если значение отсутствует как выход awk
  • Linux и Unix - лучшая ОС в мире.