Não é possível adicionar aspas duplas no final de cada linha com sed

1

Estou fazendo tudo isso no windows vista 32 bit. Estou usando o sed.exe (versão GnuWin32 4.1.5.4013) colocado em folder_b. Na pasta eu tenho arquivo.txt com isso dentro dele:

This 
is
a
test

O que eu quero é o seguinte:

This"
is"
a"
test"

Na pasta_a eu também tenho um arquivo .bat com isto:

call "C:\Users\X\Desktop\folder_b\sed.exe" "s/$/\"/" file.txt >> newfilelist.txt

Quando dou um clique no arquivo bat nada acontece. A versão GnuWin32 do sed precisa de s /../../ para ser escrita entre aspas duplas como esta --- > "s /../../"

Ele só funciona se eu quiser adicionar um número par de aspas no final de cada linha.

"s/$/\"/"---->Does not work 
"s/$/\"\"/"---->ok
"s/$/\"\"\"/"---->Does not work 
"s/$/\"\"\"\"/"---->ok

e assim por diante ...

Como é possível escapar de uma simples aspa dupla usando a versão sed gnuwin32?

    
por paulo_setar 19.11.2016 / 19:45

2 respostas

0

Eu não sei nada sobre sed no Windows, mas por que você está usando " no seu sed e, em seguida, escape desses caracteres?

Você não pode usar isso:

sed 's/$/"/'

Exemplo:

echo "This 
is
a
test" | sed 's/$/"/'
This"
is"
a"
test"

... mas isso ainda não explica esse comportamento. Com o GNU sed , isso também funciona:

echo "This
is
a
test" | sed "s/$/\"/"
This"
is"
a"
test"
    
por 19.11.2016 / 19:52
0

Ok, agora consegui descobrir uma solução.

Se eu escrever isso no meu arquivo bat:

call "C:\Users\X\Desktop\folder_b\sed.exe" -i "s/$/\"/" file.txt

agora funciona !!

Mas se eu escrever isso:

call "C:\Users\X\Desktop\folder_b\sed.exe" "s/$/\"/" file.txt >> filenew.txt

Não funciona !!

Então, por que só posso modificar no lugar em vez de criar um novo arquivo?

    
por 19.11.2016 / 22:11

Tags