|
From: | Bezaleel Ramos |
Subject: | Re: [shell-script] Dúvida com sed |
Date: | Wed, 26 Mar 2014 19:16:49 -0300 |
O problema é que vc, rigidamente, procurou por 4 sequências de 3 números separadas por ponto e nem sempre são 3 números. A sua ER funcionaria pa IPPs do tipo 123.123.123.123. Veja:$ sed -r 's-^([0-9]{3}).([0-9]{3}).([0-9]{3}).([0-9]{3})$-/teste-' <<< 123.123.123.123/testeCQD.Para funcionar a contento, vc pode fazer:$ route -n | sed -r 's/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/teste-teste-teste-teste/'Tabela de Roteamento IP do KernelDestino Roteador MáscaraGen. Opções Métrica Ref Uso Ifaceteste-teste-teste-teste 192.168.42.129 0.0.0.0 UG 0 0 0 usb0teste-teste-teste-teste 0.0.0.0 255.255.255.0 U 1 0 0 usb0Mas nesse caso vc substitui só a 1ª ocorrencia de cada linha. Para substituir todas, é só informar que a substituição é global (g). Veja:$ route -n | sed -r 's/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/teste-teste-teste-teste/g'Tabela de Roteamento IP do KernelDestino Roteador MáscaraGen. Opções Métrica Ref Uso Ifaceteste-teste-teste-teste teste-teste-teste-teste teste-teste-teste-teste UG 0 0 0 usb0teste-teste-teste-teste teste-teste-teste-teste teste-teste-teste-teste U 1 0 0 usb0
Mas o processo mais curto e enxuto de fazer a mesma tarefa é:$ route -n | sed -r 's/([0-9]{1,3}\.){3}[0-9]{1,3}/teste-teste-teste-teste/g'Tabela de Roteamento IP do KernelDestino Roteador MáscaraGen. Opções Métrica Ref Uso Ifaceteste-teste-teste-teste teste-teste-teste-teste teste-teste-teste-teste UG 0 0 0 usb0teste-teste-teste-teste teste-teste-teste-teste teste-teste-teste-teste U 1 0 0 usb0Tudo isso sem fazer I/O em disco que vc deveria ter evitadoAbcs,Julio@juliobash
Próximos cursos de Shell
Cidade
Local
Período
Rio de Janeiro
07-11/04
Dou treinamento de shell em qualquer cidade.
Para detalhes, entre em contato por email ouecho 436233889341364416673541503686485725801923229706P | dcEm 26 de março de 2014 00:16, Bezaleel Ramos <address@hidden> escreveu:
Pesquisei no fórum algo relacionado o mais próximo que peguei foi do Julio, e tentei algo como:Como vocês pode vê ele não substitui.Ele substitui mas quando uso:Quando eu uso o sed para substituir as primeiras cadeia de três números que vai [0-9]:Criei um arquivo onde peguei a saida do comando route -n e armazenei neste arquivo.Cenário:Não estou desenvolvendo script nada, só queria tirar uma dúvida com o sed.Galera,
$sed -r 's/([0-9]{3})/teste/' route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 teste.168.1.1 0.0.0.0 UG 0 0 0 wlan0
teste.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
$sed -r 's-^([0-9]{3}).([0-9]{3}).([0-9]{3}).([0-9]{3})$-/teste-' route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 wlan0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
$ sed -r 's|([0-9]{3}).([0-9]{3}).([0-9]{3}).([0-9]{3})|\teste|' route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 wlan0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
Alguém sabe como tenho que organizar esta expressão para da certo?Vlw
--Bezaleel Ramos da SilvaTel. (21) 7996-1531
[Prev in Thread] Current Thread [Next in Thread]
- Dúvida com sed, Bezaleel Ramos, 2014/03/25
- Re: [shell-script] Dúvida com sed, Paulo Bettega, 2014/03/26
- Re: [shell-script] Dúvida com sed, Julio C. Neves, 2014/03/26
- Re: [shell-script] Dúvida com sed, Bezaleel Ramos <=
- Prev by Date: Re: [shell-script] dúvida vetor
- Next by Date: Concatenar o nome da variavel
- Previous by thread: Re: [shell-script] Dúvida com sed
- Next by thread: dúvida vetor
- Index(es):