Como adicionar aspas duplas a cada linha e depois adicionar uma vírgula no final da linha?

1

Os comandos para aditar aspas duplas:

sed -e 's/.*/\"&\"/' some_file

O comando para adicionar vírgula no final de cada linha:

perl -i -pe 's/$/,/' some_file

Eu tentei os dois, se eu adicionar aspas duplas e, em seguida, acrescentar vírgula, apenas a vírgula é mostrada.

Suponha que eu tenha um arquivo de texto como:

aav
afv 
adad 

Eu quero:

"aav",
"afv",
"adad",
    
por nashy 17.08.2015 / 14:09

5 respostas

4

Supondo que você tenha o GNU sed ou o BSD sed, você perdeu a opção -i (ou -i '' com o BSD sed) para sed edição no local.

Você não precisa usar sed e perl para fazer isso, a única solicitação de um deles é fazer tudo:

LC_ALL=C sed -i 's/.*/"&",/' file

ou algo divertido com outra ferramenta padrão:

:|paste -d'"",' - file - -
    
por 17.08.2015 / 14:21
1

Usando o comando sed :

sed 's/\(.*\)\r/"",/g' filename

Ele removerá o retorno de carro e adicionará as aspas e vírgulas.

Saída:

"aav",
"afv",
"adad",
    
por 17.08.2015 / 14:31
1

com awk

awk '{ printf "\"%s\",\n", $0 }' file
    
por 17.08.2015 / 16:19
0

Não é tão bom, mas é uma maneira bastante robusta (já que você pode controlar separadamente o início e o fim da linha):

sed -i s/^/\"/ file.txt && sed -i s/$/\",/ file.txt

Claro que isso também pode ser feito com a ferramenta "Colar".

ALTERNATIVA:

Usando referências do SED:

sed -i 's/\(.*\)/\"\",/' file.txt

NÃO: A solução Sed aplica-se apenas se você estiver usando o GNU sed

    
por 17.08.2015 / 14:23
0

Você pode usar o Vim no modo Ex:

ex -sc '%s/.*/"&",/|x' file
  1. % seleciona todas as linhas

  2. s substituto

  3. x salvar e fechar

por 17.04.2016 / 07:43