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

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

Re: [shell-script] selecionar parte final de uma linha após delimitador


From: address@hidden
Subject: Re: [shell-script] selecionar parte final de uma linha após delimitador - Resolvido - Muito Obrigado
Date: Sun, 17 Feb 2008 12:37:11 -0300
User-agent: Icedove 1.5.0.14pre (X11/20080208)

Agradeço imensamente aos colegas Flávio Júnior, Otávio Fernandes
e Mop pela solução do problema.

A solução sugerida pelo Flávio funcionou 100 %,  e a explicação
do funcionamento do comando foi  tão  importante quanto a
solução.

Valeu mesmo pessoal. Espero um dia atingir o nível de vcs e poder retribuir
à comunidade.

Grande abraço.

Emmanuel Abdala
Anápolis - Go

Flavio Junior wrote:

[root@gandalf root]# cat x
http://www.site.com.br/controle/interno/14_02_2008_15_44.avi <http://www.site.com.br/controle/interno/14_02_2008_15_44.avi> http://www.site.com.br/controle/interno/patio/deposito/03_01_2008_21_18.avi <http://www.site.com.br/controle/interno/patio/deposito/03_01_2008_21_18.avi>
[root@gandalf root]# sed 's#.*/##' x
14_02_2008_15_44.avi
03_01_2008_21_18.avi
[root@gandalf root]#

Ou seja:

Substitua TUDO até a "/" por nada:

s = substituir
# = deliimitador de "substituir o que # pelo o que #"

Como o * é "guloso", o TUDO até a / chega na ultima barra. E resolve
tue problema...

pra entender melhor o sed, faça exemplos com o echo:

echo teste | sed 's#e#U#'
tUste

o simbolo delimitador pode ser qualquer um.. o mais comum é a /, mas
como ela era parte da tua string, eu preferi usar outro...

echo teste | sed 's/e/U/g'
tUstU

veja o "g" no final, que diz "Substitua TODAS ocorrencias, e não so a primeira"

--

Flavio do Carmo Junior

2008/2/17 address@hidden <mailto:shell-script%40abdala.org> <address@hidden <mailto:shell-script%40abdala.org>>:
>
>
>
>
>
>
> Olá pessoal,
>
> Sou inicante no shell, e estou precisando de uma pequena ajuda dos colegas.
>
> Preciso separar a última parte de uma linha.
> Tipo, uma linha de exemplo seria:
>
> http://www.site.com.br/controle/interno/14_02_2008_15_44.avi <http://www.site.com.br/controle/interno/14_02_2008_15_44.avi>
>
> outra linha de exemplo seria
>
> http://www.site.com.br/controle/interno/patio/deposito/03_01_2008_21_18.avi <http://www.site.com.br/controle/interno/patio/deposito/03_01_2008_21_18.avi>
>
> (o nome do arquivo varia sempre, e
> quantidade de delimitadores "/" também, o que não varia nunca
> é que o campo de interesse é sempre a parte final, ou seja, tudo depois
> do último "/" ).
>
> Inicialmente, tentei usar o cut, com o seguinte comando:
>
> NOME=http://www.site.com.br/controle/interno/arquivo.avi <http://www.site.com.br/controle/interno/arquivo.avi>
> echo $NOME | cut -f6 -d/
>
> mas como a quantidade de delimitadores "/" pode variar, o cut não
> funcionaria corretamente,
> já que o cut conta partindo do início da linha.
>
> Se eu tivesse como usar o cut ao contrário, ou seja, contando do final
> da linha
> até o início, seria bem simples, pq o meu campo de interesse é,
> obrigatóriamente, sempre o último.
>
> Agradeço muito mesmo, qualquer ajuda ou dica.
>
> Obrigado
>
> Emmanuel Abadala
> Anápolis - Go
>
>



reply via email to

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