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

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

Re: [shell-script] Quem me explica ? sed


From: Julio C. Neves
Subject: Re: [shell-script] Quem me explica ? sed
Date: Thu, 7 Nov 2013 13:54:48 +0000

EPA!!!! Quero fazer uma observação aí! Não confunda uma coisa com a outra! Neste caso as barras não são sepadores, nessa caso são delimiradores de ER, isto é, servem para dizer onde termina a ER (que estava na variável $item) e começa o comando (que neste caso era o d).

» No primeiro caso, isto é, qdo tratamos separadores (p.ex. no cmd "s" e no cmd "y') o primeiro caractere, qq que seja ele, que seguir o cmd será considerado separador. Exs:

$ sed 'svavXvgi' <<<asdASDaaaAAA
XsdXSDXXXXXX

Neste caso usei  v como separador, para trocar todas (g) as letras a, maiúsculas e minúsculas (i) por X

$ sed 'y^OIZEASGTBQ^0123456789^' <<< INCONSTITUCIONALISSIMAMENTE
1NC0N5717UC10N4L1551M4M3N73

Para executar o cmd y, usei o circunflexo como separador, sem nenhum problema.

Mas veja só o que vem a seguir::

$ sed -n '/UNIX/p' quequeisso
O Shell alem de analisar cada dado entrado a partir do prompt do UNIX,
Controle do ambiente UNIX;

$ sed -n '-UNIX-p' quequeisso
sed: invalid option -- 'U'
Uso: sed [OPÇÃO]... {script-apenas-se-for-único} [arquivo-entrada]...
......................
......................
Ajuda sobre softwares GNU: <http://www.gnu.org/gethelp/>.

$ sed -n '\-UNIX-p' quequeisso
O Shell alem de analisar cada dado entrado a partir do prompt do UNIX,
Controle do ambiente UNIX;

Agora, qdo usado como delimitador de ER a barra funcionou e o hífen não. Para substituir a barra por qq outro delimitador, é necessário (e obrigatório) que o primeiro deles seja "escapado". Isso é muito interessante e pouco conhecido.

OBS: Os pontos foram colocados para substituir o enorme texto gerado pelo erro.

Abcs,
Julio
@juliobash
A partir de 02/12 estarei ministrando um curso completo de Shell no Rio de Janeiro.



Em 7 de novembro de 2013 12:35, miranda <address@hidden> escreveu:
 

Pois é , esqueci de colocar o separador .
Valeu

On Thu, 2013-11-07 at 08:52 -0200, Ernander (Nander) wrote:

 
o Sed pode usar outros Separadores além do /, ex @, # etc...


Pelo que vi seu Script para o PARAMETRO $item e seu sed tem o SEPARADOR $ ( creio que o $ seria o pior Separador em se tratando de script)


tente fazer seu Sed assim :

TensaZangetsu /tmp $ cat lista
tomcat6
tomcat6-relatorio

TensaZangetsu /tmp $ item="tomcat6"; sed "/$item/d" lista  # USANDO / como Separador

TensaZangetsu /tmp $


Abraços


Att


Ernander Marcus Lataliza Rosendo
Certified SonicWall Security Administrator


Em 7 de novembro de 2013 08:26, miranda <address@hidden> escreveu:
 
Pessoal , estava querendo  usar sed
para remover um item de uma lista
que está em um arquivo.
Fiz o que mostro abaixo e obtive
um erro inesperado.
Alguém pode me explicar e , se quiser,
propor uma solução utilizando sed ?

[root@guitar run]# echo $item
tomcat6
[root@guitar run]# cat /tmp/lista
     1  tomcat6
     2  tomcat6-relatorio
[root@guitar run]# sed "$item$d" /tmp/lista
sed: can't find label for jump to `omcat6'









reply via email to

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