Problema com o comando Sed para fazer uma substituição [RESOLVIDO]

1. Problema com o comando Sed para fazer uma substituição [RESOLVIDO]

Saulo Martins
degusto9

(usa Ubuntu)

Enviado em 26/02/2016 - 01:22h

Boa noite pessoal!
Vocês podem me ajudar? Por favor!

Eu eu fiz um script em shell para gerar "Insert". Bom, a maioria dos meus campos são string e por isso as plicas ' '.
Mas, eu estou com um problema em um detalhe quando o campo é vazio, então o mesmo vai ficar , ' ', . Bom, eu estou
querendo substituir isso por ,null, . Em, por exemplo, seria assim:
INSERT INTO TESTE (CASA, NUMERO, ) VALUES (' APARTAMENO', ' ', 'AVENIDA: CHILE);
eu quero que fica assim
INSERT INTO TESTE (CASA, RUA, NUMERO) VALUES (' APARTAMENO', 'AVENIDA: CHILE, 201', null);

Bom, eu estou tentando o comando sed 's/' '/null/g' saida_saiu.txt> saida234.txt mas não está substituindo
vocês sabem o que eu estou errando?
PS: O ,' ', pode aparecer em qualquer posição.

Desde já agradeço pela paciência!!!


  


2. Re: Problema com o comando Sed para fazer uma substituição [RESOLVIDO]

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 26/02/2016 - 11:14h

Olá,

Use o escape (contra-barra) antes da aspas simpes e use aspas duplas no comando sed. ASsim:
sed "s/\'\'/null/g"

Abs,

Uma vida sem desafios não vale a pena ser vivida.
Sócrates

---


3. Re: Problema com o comando Sed para fazer uma substituição

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 26/02/2016 - 11:24h

degusto9 escreveu:

Boa noite pessoal!
Vocês podem me ajudar? Por favor!
Eu eu fiz um script em shell para gerar "Insert". Bom, a maioria dos meus campos são string e por isso as plicas ' '.
Mas, eu estou com um problema em um detalhe quando o campo é vazio, então o mesmo vai ficar , ' ', . Bom, eu estou
querendo substituir isso por ,null, . Em, por exemplo, seria assim:
INSERT INTO TESTE (CASA, NUMERO, ) VALUES (' APARTAMENO', ' ', 'AVENIDA: CHILE);
eu quero que fica assim
INSERT INTO TESTE (CASA, RUA, NUMERO) VALUES (' APARTAMENO', 'AVENIDA: CHILE, 201', null);
Bom, eu estou tentando o comando sed 's/' '/null/g' saida_saiu.txt> saida234.txt mas não está substituindo
vocês sabem o que eu estou errando?
PS: O ,' ', pode aparecer em qualquer posição.
Desde já agradeço pela paciência!!!

-------------------------------------------------------
Bom dia.
Faça assim:
sed "s/''/null/g" 

TESTE:
echo "INSERT INTO TESTE (CASA, NUMERO, ) VALUES (' APARTAMENO', '', 'AVENIDA: CHILE');"|sed "s/''/null/g"
INSERT INTO TESTE (CASA, NUMERO, ) VALUES (' APARTAMENO', null, 'AVENIDA: CHILE');


att.:
marcelo oliver

OBS.: Se resolver, marque como resolvido, gostando da solução, marque como melhor resposta . . . :)




4. Re: Problema com o comando Sed para fazer uma substituição [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 26/02/2016 - 11:36h

tonyhts escreveu:

Olá,

Use o escape (contra-barra) antes da aspas simpes e use aspas duplas no comando sed. ASsim:
sed "s/\'\'/null/g"

Abs,

Uma vida sem desafios não vale a pena ser vivida.
Sócrates

---

--------------------------------------------
Bom dia Tonyhts.
Da forma que você sugeriu, testando aqui, o null foi para o fim da linha, veja:
echo ":VIVA '' o LINUX:"|sed "s/\'\'/null/g"
:VIVA '' o LINUX:null


É isso, ou meu SED ta maluco. . . Rsrsrsrs

abç.:
marcelo oliver




5. Re: Problema com o comando Sed para fazer uma substituição [RESOLVIDO]

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 26/02/2016 - 22:03h

msoliver escreveu:

Bom dia Tonyhts.
Da forma que você sugeriu, testando aqui, o null foi para o fim da linha, veja:
echo ":VIVA '' o LINUX:"|sed "s/\'\'/null/g"
:VIVA '' o LINUX:null


É isso, ou meu SED ta maluco. . . Rsrsrsrs

abç.:
marcelo oliver



Fala Mestre! blza?
Cara, que doido! aqui tbm rolou isso...
Vou pesquisar o pq disso. rs

Abração!


Uma vida sem desafios não vale a pena ser vivida.
Sócrates

---


6. Re: Problema com o comando Sed para fazer uma substituição [RESOLVIDO]

Saulo Martins
degusto9

(usa Ubuntu)

Enviado em 27/02/2016 - 00:57h

msoliver escreveu:

[quote]degusto9 escreveu:

Boa noite pessoal!
Vocês podem me ajudar? Por favor!
Eu eu fiz um script em shell para gerar "Insert". Bom, a maioria dos meus campos são string e por isso as plicas ' '.
Mas, eu estou com um problema em um detalhe quando o campo é vazio, então o mesmo vai ficar , ' ', . Bom, eu estou
querendo substituir isso por ,null, . Em, por exemplo, seria assim:
INSERT INTO TESTE (CASA, NUMERO, ) VALUES (' APARTAMENO', ' ', 'AVENIDA: CHILE);
eu quero que fica assim
INSERT INTO TESTE (CASA, RUA, NUMERO) VALUES (' APARTAMENO', 'AVENIDA: CHILE, 201', null);
Bom, eu estou tentando o comando sed 's/' '/null/g' saida_saiu.txt> saida234.txt mas não está substituindo
vocês sabem o que eu estou errando?
PS: O ,' ', pode aparecer em qualquer posição.
Desde já agradeço pela paciência!!!

-------------------------------------------------------
Bom dia.
Faça assim:
sed "s/''/null/g" 

TESTE:
echo "INSERT INTO TESTE (CASA, NUMERO, ) VALUES (' APARTAMENO', '', 'AVENIDA: CHILE');"|sed "s/''/null/g"
INSERT INTO TESTE (CASA, NUMERO, ) VALUES (' APARTAMENO', null, 'AVENIDA: CHILE');


att.:
marcelo oliver

OBS.: Se resolver, marque como resolvido, gostando da solução, marque como melhor resposta . . . :)

degusto9 escreveu:

Olá msoliver!

Agradeço ajuda, porém eu esqueci de mencionar que eu pego os dados de um txt e estou usando redirecionamento.
Como eu faria para encaixar a leitura?

Estou fazendo assim, porém não está funcionando!
sed "s/''/null/g" entrada.txt > saida.txt

Como faço?






7. Re: Problema com o comando Sed para fazer uma substituição [RESOLVIDO]

Saulo Martins
degusto9

(usa Ubuntu)

Enviado em 27/02/2016 - 01:01h

tonyhts escreveu:

msoliver escreveu:

Bom dia Tonyhts.
Da forma que você sugeriu, testando aqui, o null foi para o fim da linha, veja:
echo ":VIVA '' o LINUX:"|sed "s/\'\'/null/g"
:VIVA '' o LINUX:null


É isso, ou meu SED ta maluco. . . Rsrsrsrs

abç.:
marcelo oliver



Fala Mestre! blza?
Cara, que doido! aqui tbm rolou isso...
Vou pesquisar o pq disso. rs

Abração!


Uma vida sem desafios não vale a pena ser vivida.
Sócrates

---


degusto9 escreveu:

É verdade o "null" vai para o final do arquivo!
Muita doideira isso. E agora?





8. Re: Problema com o comando Sed para fazer uma substituição [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 27/02/2016 - 01:06h

Após alguns testes e procura no Stack Overflow, parece-me que este funciona:

echo ":VIVA '' o LINUX:" | sed "s/''/null/g"

----------------------------------------------------------------------------------------------------------------
http://24.media.tumblr.com/tumblr_m62bwpSi291qdlh1io1_250.gif

# apt-get purge systemd (não é prá digitar isso!)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



9. Re: Problema com o comando Sed para fazer uma substituição [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 27/02/2016 - 12:13h

degusto9 escreveu:

[quote]msoliver escreveu:

[quote]degusto9 escreveu:

Boa noite pessoal!
Vocês podem me ajudar? Por favor!
Eu eu fiz um script em shell para gerar "Insert". Bom, a maioria dos meus campos são string e por isso as plicas ' '.
Mas, eu estou com um problema em um detalhe quando o campo é vazio, então o mesmo vai ficar , ' ', . Bom, eu estou
querendo substituir isso por ,null, . Em, por exemplo, seria assim:
INSERT INTO TESTE (CASA, NUMERO, ) VALUES (' APARTAMENO', ' ', 'AVENIDA: CHILE);
eu quero que fica assim
INSERT INTO TESTE (CASA, RUA, NUMERO) VALUES (' APARTAMENO', 'AVENIDA: CHILE, 201', null);
Bom, eu estou tentando o comando sed 's/' '/null/g' saida_saiu.txt> saida234.txt mas não está substituindo
vocês sabem o que eu estou errando?
PS: O ,' ', pode aparecer em qualquer posição.
Desde já agradeço pela paciência!!!

-------------------------------------------------------
Bom dia.
Faça assim:
sed "s/''/null/g" 

TESTE:
echo "INSERT INTO TESTE (CASA, NUMERO, ) VALUES (' APARTAMENO', '', 'AVENIDA: CHILE');"|sed "s/''/null/g"
INSERT INTO TESTE (CASA, NUMERO, ) VALUES (' APARTAMENO', null, 'AVENIDA: CHILE');


att.:
marcelo oliver

OBS.: Se resolver, marque como resolvido, gostando da solução, marque como melhor resposta . . . :)

degusto9 escreveu:

Olá msoliver!

Agradeço ajuda, porém eu esqueci de mencionar que eu pego os dados de um txt e estou usando redirecionamento.
Como eu faria para encaixar a leitura?

Estou fazendo assim, porém não está funcionando!
sed "s/''/null/g" entrada.txt > saida.txt
Como faço?

------------------------------
Olá degusto9.
As opções são:
sed -i "s/''/null/g" entrada.txt # Altera o arquivo entrada.txt
sed -i.BACKUP "s/''/null/g" entrada.txt #Altera o arquivo entrada.txt e gera entrada.txt.BACKUP
DETALHE-01:
Estou fazendo assim, porém não está funcionando!
Observe se entre as aspas simples existe espaço, => ' ' ou não => ''
Para solucionar ambos os casos, este é o comando:
sed -i "s/' '\|''/null/g" entrada.txt 


DETALHE-02
É muito sutil a diferença entre duas aspas simples consecutivas '' e uma aspas dupla "

No COMANDO é DIGITADO da seguinte forma:
sed -i "(ASPAS DUPLA)s/' '(ASPAS SIMPLES ESPAÇO ASPAS SIMPLES)\|''(DUAS ASPAS SIMPLES )/null/g"(ASPAS DUPLA) entrada.txt 



OBS.: Se resolver, marque como resolvido, gostando da solução, marque como melhor resposta . . . :)

att.:
marcelo oliver





  



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts