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

Я хочу добавить 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 

  • Отфильтруйте пути из текстового файла, который глубже, чем их непосредственный предшественник
  • рассчитать коэффициент используя awk
  • AWK сравнивает помощь для получения желаемого объёма вывода
  • Замена символа подчеркивания запятой и удаление двойных кавычек в CSV
  • Найти совпадения на смежных линиях
  • Я не могу найти процесс отправки почты?
  • Помощь с повторением поля A в CSV-файле, где поле B имеет указанное значение
  • Перечислять дубликаты имен файлов в листинге?
  • 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 , был ли он изменен или нет.

    Linux и Unix - лучшая ОС в мире.