Substituir somente os caracteres que estão entre "aspas"

1. Substituir somente os caracteres que estão entre "aspas"

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 27/10/2017 - 11:20h

Como trocar somente os espaços que estão dentro das aspas por _?
Eu gosto do "Viva o Linux". 

Resultado esperado
Eu gosto do "Viva_o_Linux". 



  


2. Re: Substituir somente os caracteres que estão entre

Lucas Alves Santos
Lwkas

(usa XUbuntu)

Enviado em 27/10/2017 - 22:27h

Sugiro esses dois artigos para você, ambos sobre AWK, com eles você vai ter uma base para achar uma solução para sua dúvida.

Awk - Uma poderosa ferramenta de análise
https://www.vivaolinux.com.br/dica/Awk-Uma-poderosa-ferramenta-de-analise 


Comando awk no Linux – Introdução/
http://www.dltec.com.br/blog/linux/uma-introducao-ao-uso-do-awk-no-linux/ 



3. Re: Substituir somente os caracteres que estão entre "aspas"

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 27/10/2017 - 23:09h

v aí se te ajuda
sed ':a;s/^\([^"]*"[^"]\+\) /\1_/;ta' 

mauricio@phantom ~ $ cat txt
eu gosto do "viva o linux"
mauricio@phantom ~ $ sed ':a;s/^\([^"]*"[^"]\+\) /\1_/;ta' txt
eu gosto do "viva_o_linux"
mauricio@phantom ~ $


fonte >>> http://thobias.org/doc/sosed.html#toc33 Item>>2.29


------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



4. Re: Substituir somente os caracteres que estão entre "aspas"

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 27/10/2017 - 23:46h

Mauriciodez escreveu:

v aí se te ajuda
sed ':a;s/^\([^"]*"[^"]\+\) /\1_/;ta' 

mauricio@phantom ~ $ cat txt
eu gosto do "viva o linux"
mauricio@phantom ~ $ sed ':a;s/^\([^"]*"[^"]\+\) /\1_/;ta' txt
eu gosto do "viva_o_linux"
mauricio@phantom ~ $


fonte >>> http://thobias.org/doc/sosed.html#toc33 Item>>2.29



Quase lá!
Funciona apenas para uma ocorrência de aspas, se tiver mais não funfa :\
$ echo 'a b c "a b c" d e f "d e f"'  | sed ':a;s/^\([^"]*"[^"]\+\) /\1_/;ta'
a b c "a_b_c" d e f "d e f"








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts