Unix - Surround Primeira Coluna de CSV com aspas duplas

1

Eu tenho dados no seguinte formato -

4,"abc"
8,"def"
9,"ghi"

Eu quero cercar o valor da primeira coluna por aspas duplas.

"4","abc"
"8","def"
"9","ghi"

Como faço isso?

    
por Abhinav Manchanda 23.10.2013 / 11:32

3 respostas

5

Uma substituição muito simples é:

cat tmp.csv | awk -F, '{sub($1, "\"&\""); print}'

A opção -F, diz ao awk que o delimitador de campo é a vírgula, o argumento de sub (stitution) diz ao awk para substituir o primeiro campo por si (&), precedido e seguido por ".

    
por 23.10.2013 / 12:50
0

Esta é apenas uma maneira rápida e suja (haverá maneiras melhores):

sed -e 's/"//g' -e 's/^\|$/"/g' -e 's/,/","/g' file.csv

O primeiro s/"//g remove todos os " .
Então s/^\|$/"/g adiciona " no início e no fim da linha.
E o último s/,/","/g substitui todos os , por "," .

É claro que este somente funciona se você não tiver " e , em seus campos.

    
por 23.10.2013 / 11:46
0

Isso pode funcionar para você (GNU sed):

sed 's/[^,]*/"&"/' file
    
por 29.10.2013 / 23:06

Tags