shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Problema com o sed


From: Julio C. Neves
Subject: Re: [shell-script] Problema com o sed
Date: Thu, 15 Jan 2015 12:17:49 -0200

Fala Fábio,
uma dica meio desconhecida: Essa sintaxe que vc usou, só funciona para o comando substitude (s) do sed. Como delimitador de variáveis não funfa. Vamos excluir o 3 de uma seq, usando o que vc propôs:

$ seq 5 | sed '#3#d'
1
2
3
4
5

Como vc pode ver, ele não fez o pretendido. Para isso funcionar, temos de usar uma contrabarra (\) antes do primeiro delimitador, veja:

$ seq 5 | sed '\#3#d'
1
2
4
5

Ahhh, agora sim ;)

Outra forma (acho que menos inteligente) seria fazer um outro sed previamente, que colocasse uma contrabarra (\) antes de cada barra da variável. Assim:

$ var="hx;01/10/2014;10099;en;rn"
$ var=$(sed 's#/#\\/#g' <<< "$var"); echo $var
hx;01\/10\/2014;10099;en;rn

Pronto, agora o sed que ele estava tentando fazer, deve funfar.
Abcs,
Julio
@juliobash
P
róximos cursos de Shell
Cidade         Local Período
Rio de Janeiro EDX 09 a 13/03/15
São Paulo 4Linux 24 a 28/11/14
Dou treinamento de Shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.


Em 14 de janeiro de 2015 23:05, "Fábio R. Medeiros" address@hidden [shell-script] <address@hidden> escreveu:
 

Além de escapar a / para não ser interpretada como um delimitador, como disse o Tiago, outra solução possível é usar outro caracter delimitador que não esteja na expressão.

Usando o # p.ex, ficaria:

sed -i "#

​​
hx;01/10/2014;10099;en;rn#d" /tmp/teste.txt

Outra coisa, prefira aspas simples '#hx;01/10/2014;10099;en;rn#d' evita que algum caracter especial seja interpretado pelo shell...

Abraço

Fábio



On 14-01-2015 22:39, address@hidden [shell-script] wrote:
 

Boa Noite pessoal


Estou com o problema abaixo :


sed -i "/hx;01/10/2014;10099;en;rn/d" /tmp/teste.txt


sed: -e _expression_ #1, char 12: unknown command: `1'


estou tentando remover a linha hx;01/10/2014;10099;en;rn do arquivo /tmp/teste.txt


poderiam ajudar


Grato




reply via email to

[Prev in Thread] Current Thread [Next in Thread]