Скопируйте данные из последнего столбца и перейдите в новый столбец в файле. - PullRequest
0 голосов
/ 05 июня 2019

Я хочу переместить данные в последнем столбце в новый столбец с определенным именем столбца в файле, если это возможно.Последний столбец, из которого мы перемещаемся, должен быть пустым.

Входные данные: файл образца

Col1,col2,col3,col4
1,abc,test,"Codes:1,2,3,4"
2,xyz,test1,"Codes:12,22,3,4"
3,def,test2,"Codes:1,22,3,41"

Выходные данные:

Col1,col2,col3,col4,codes
1,abc,test,,"1,2,3,4"
2,xyz,test1,,"12,22,3,4"
3,def,test2,,"1,22,3,41"

Мне удалось вырезать данные, но я не смог переместить их в новый столбец

cut -d',' -f12- < file.csv | awk -F":" '{print $2}' | awk -F"\"" '{print $1}'

Я не уверен, что это тоже правильный подход.

Ответы [ 4 ]

1 голос
/ 05 июня 2019
$ awk 'NR==1{print $0",codes"; next} {sub(/"[^:]+:/,",\"")} 1' file
Col1,col2,col3,col4,codes
1,abc,test,,"1,2,3,4"
2,xyz,test1,,"12,22,3,4"
3,def,test2,,"1,22,3,41"
1 голос
/ 05 июня 2019

Использование sed:

sed '1s/$/,codes/;s/"Codes:/,"/' <file> 

Использование awk:

awk 'BEGIN{FS=OFS=","}NR==1{print $0, "codes"}NR!=1{gsub("Codes:",""); $4 = FS $4; print}' <file>
0 голосов
/ 05 июня 2019

Не могли бы вы попробовать следующее.

awk '{sub(/\,\"[a-zA-Z]+:/,",,\"")} 1'  Input_file
0 голосов
/ 05 июня 2019

Это может сработать для вас (GNU sed):

sed '1s/$/,codes/;1!s/"Codes:/,"/' file

Для первых строк добавить ,codes, все остальные строки заменить "Codes: на ,".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...