Copie o texto contido apenas entre aspas “” de um arquivo

1

/etc/opendkim/keys/"$(hostname)"/default.txt contém o seguinte

default._domainkey IN TXT "v=DKIM1; r=postmaster; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBZZZZZZZZZZZZZZZZZZZZZZZZYVW/965FePDPfxTIUT5ScJ3mZZZZZZZZ8BWNgLFS6JtZZZZZZZZZZZZZZk7Sc+eQwY6tHAQvHczJTTkICB4WW9mtc5PlFAZNuC9X3oYTeIp8cpScBmaIaP+t35fwh+PL7ZZZZZZZZZZ3ZxoFsJD6pvCqx+TCbZZZZZZZZ5JQIDAQAB" ; ----- DKIM default for mydomain.com

Eu quero copiar apenas as coisas dentro das aspas (sem incluí-las) v=DKIM1; r=postmaster; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBZZZZZZZZZZZZZZZZZZZZZZZZYVW/965FePDPfxTIUT5ScJ3mZZZZZZZZ8BWNgLFS6JtZZZZZZZZZZZZZZk7Sc+eQwY6tHAQvHczJTTkICB4WW9mtc5PlFAZNuC9X3oYTeIp8cpScBmaIaP+t35fwh+PL7ZZZZZZZZZZ3ZxoFsJD6pvCqx+TCbZZZZZZZZ5JQIDAQAB em outro arquivo.

Como posso fazer isso?

    
por Teddy291 08.07.2015 / 03:38

2 respostas

1
sed 's/.*\"\(.*\)\".*//' filename
    
por 08.07.2015 / 03:56
2

Se definitivamente houver apenas uma string entre aspas por linha, sua solução mais eficaz envolverá cut :

cut -d\" -f2 <in >out

Se houver mais de uma string entre aspas, você poderá fazer:

sed 's/[^"]*\("[^"]*"\)[^"]*/  /g' <in >out

..., que imprimirá apenas todas as cadeias de texto com aspas duplas por linha, cada uma separada com um espaço à esquerda e à direita.

Nenhuma das soluções acima é other-quote ciente, no entanto. Nenhum deles irá ignorar aspas com escape de barra invertida, ou aspas duplas contidas entre aspas duras, por exemplo.

    
por 08.07.2015 / 04:43