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

Это зависит от того, какую оболочку и (к сожалению) какую систему вы используете. Bash, например, использует разные файлы запуска в зависимости от того, используется ли он как интерактивная или неинтерактивная оболочка, как описано в руководстве по bash.

В принципе, вы должны иметь возможность добавить export PATH=$HOME/bin:$PATH в ваш файл ~/.bashrc, который затем будет выполняться только для интерактивных не -логин оболочки. На практике некоторые системы настроены так, что они читают ~/.bashrc также и для неинтерактивных оболочек.

Связанные вопросы:

1
01.08.2016, 22:39
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.

0
28.01.2020, 01:13

С 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.
0
28.01.2020, 01:13

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

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.
0
28.01.2020, 01:13

Теги

Похожие вопросы