Intereting Posts
Wget с другим именем файла, но с тем же расширением Как изменить все строки в файле python от snake_case до camelCase в sed Настройка беспроводной сети на FreeBSD: маршрутизатор показывает, что беспроводное устройство подключено, но не может выполнить пинг Как понять ssh-keygen и ssh-copy-id? Как исправить «деаутентификацию по местному выбору»? -bash: android: команда не найдена Как определить, какой диск и каталог загружалась вашей системой, если он не установлен в / etc / fstab? скопировать файл в пункт назначения с разными именами Как переключиться в режим редактирования vi в readline? grep: шаблон соответствия в определенном положении Грепируйте линии между появлением одного и того же шаблона IFS Kernel Panic при первой загрузке Найдите значение из динамического файла и перейдите к переменной в HTML В Debian Stretch драйверы Nouveau заставляют мой компьютер замораживать, приходилось устанавливать в мою систему несвободные пакеты NVIDIA, любые альтернативы? Как изменить заголовок «GNU GRUB version x.xx»

Строка строк вложения для первых двух столбцов равна

Я пытаюсь получить из этого файла:

A4690021|product.actor|Laurel Cronin A4690021|product.actor|Bob Hoskins A4690021|product.actor|Caroline Goodall A4690021|product.actor|Julia Roberts A4690021|product.actor|Maggie Smith A4690021|product.actor|Amber Scott A4690021|product.actor|Charlie Korsmo A4690021|product.actor|Robin Williams A4690021|product.actor|Dustin Hoffman A4690021|product.director|Steven Spielberg A4690021|product.bestSellers|Offline Best Seller A4690021|product.bestSellers|Online Best Seller A4690021|product.parentCategory.id|999.54215013.999.54216013 A4690021|product.storeName|Cine A4690021|product.parentCat.displayName|Infantil A19129625|product.author|. VV.AA. 

Этот результат:

 A4690021|product.actor|Laurel Cronin,Bob Hoskins,Caroline Goodall,Julia Roberts,Maggie Smith,Amber Scott,Charlie Korsmo,Robin Williams,Dustin Hoffman A4690021|product.director|Steven Spielberg A4690021|product.bestSellers|Offline Best Seller, A4690021|product.parentCategory.id|999.54215013.999.54216013 A4690021|product.storeName|Cine A4690021|product.parentCat.displayName|Infantil A19129625|product.author|. VV.AA. 

Попытка использовать этот awk-скрипт:

 awk -F'|' '{a[$1"|"$2]=a[$1"|"$2]","$3}END{for(x in a)print x""a[x]}' SEARCH_ECISTORE_PRD_MULTI_ES_s.csv 

Но я не знаю, почему я получаю это:

 A4690021|product.storeName,Cine A4690021|product.parentCategory.id,999.54215013.999.54216013 A19129625|product.author,. VV.AA. A4690021|product.director,Steven Spielberg ,Dustin Hoffmanllactor,Laurel Cronin A4690021|product.parentCat.displayName,Infantil ,Online Best SellerstSellers,Offline Best Seller 

У меня проблема при чтении актеров, кажется, что 3 доллара содержит правильную ценность, но при их объединении они вроде бы сливаются странными способами.

Чтобы исправить полевые разделители для последнего поля:

 $ awk -F'|' '{a[$1"|"$2]=a[$1"|"$2]","$3} END{for(x in a)print x"|"substr(a[x],2)}' file.csv A4690021|product.storeName|Cine A4690021|product.parentCategory.id|999.54215013.999.54216013 A19129625|product.author|. VV.AA. A4690021|product.director|Steven Spielberg A4690021|product.actor|Laurel Cronin,Bob Hoskins,Caroline Goodall,Julia Roberts,Maggie Smith,Amber Scott,Charlie Korsmo,Robin Williams,Dustin Hoffman A4690021|product.parentCat.displayName|Infantil A4690021|product.bestSellers|Offline Best Seller,Online Best Seller 

Линейная упаковка

Давайте преобразуем исходный файл в формат DOS / Windows:

 $ unix2dos <file.csv >file.dos $ awk -F'|' '{a[$1"|"$2]=a[$1"|"$2]","$3} END{for(x in a)print x"|"substr(a[x],2)}' file.dos A4690021|product.storeName|Cine A4690021|product.parentCategory.id|999.54215013.999.54216013 A19129625|product.author|. VV.AA. A4690021|product.director|Steven Spielberg ,Dustin Hoffmanllactor|Laurel Cronin A4690021|product.parentCat.displayName|Infantil ,Online Best SellerstSellers|Offline Best Seller 

Это похоже на ваш проблемный выход.

Решение состоит в том, чтобы запустить dos2unix или другую утилиту, чтобы удалить линейные окончания DOS / Windows.

Возможный дубликат (потому что я делаю некоторое время одинаково)

 sed ':a;$!N;s/\(\(.*|\)[^|]\+\)\n\2/\1, /;ta;P;D' SEARCH_ECISTORE_PRD_MULTI_ES_s.csv 

будет производить

 A4690021|product.actor|Laurel Cronin, Bob Hoskins, Caroline Goodall, Julia Roberts, Maggie Smith, Amber Scott, Charlie Korsmo, Robin Williams, Dustin Hoffman A4690021|product.director|Steven Spielberg A4690021|product.bestSellers|Offline Best Seller, Online Best Seller A4690021|product.parentCategory.id|999.54215013.999.54216013 A4690021|product.storeName|Cine A4690021|product.parentCat.displayName|Infantil A19129625|product.author|. VV.AA. 

С GNU datamash :

 datamash -t\| -g 1,2 collapse 3 <SEARCH_ECISTORE_PRD_MULTI_ES_s.csv 

Результат:

 A4690021|product.actor|Laurel Cronin,Bob Hoskins,Caroline Goodall,Julia Roberts,Maggie Smith,Amber Scott,Charlie Korsmo,Robin Williams,Dustin Hoffman A4690021|product.director|Steven Spielberg A4690021|product.bestSellers|Offline Best Seller,Online Best Seller A4690021|product.parentCategory.id|999.54215013.999.54216013 A4690021|product.storeName|Cine A4690021|product.parentCat.displayName|Infantil A19129625|product.author|. VV.AA.