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

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

Re: [shell-script] Remover, substituir e inserir chars em um arquivo.


From: Alysson Gonçalves de Azevedo
Subject: Re: [shell-script] Remover, substituir e inserir chars em um arquivo.
Date: Sat, 21 Jan 2012 13:25:19 -0200

Olá, jimmy, muito obrigado pela colaboração.

Todas os 3 exemplos seus funcionaram ok, porém o segundo eu não não achei
referências sobre ela, então não sei se entendi corretamente.
{s=(s)?s","$NF:$NF}

Como eu não achei nenhuma referencia sobre o comando, eu suponho que
signifique o seguinte,
se s=(s) então s","$NF senão $NF.
É isso mesmo?

Outra coisa, o que exatamente é "s=(s)"?
Eu também experimentei trocar o "s" por outra letra, mas não funcionou,
então, esse "s" é de String, ao invés de uma variável?

Mais uma vez, agradeço a todos pela ajuda.

Alysson Gonçalves de Azevedo
(11) 8491-7730



Em 20 de janeiro de 2012 22:19, jimmy <address@hidden> escreveu:

> **
>
>
> Saudações Alysson,
>
>
> On Fri, Jan 20, 2012 at 06:16:07PM -0200, Alysson Gonçalves de Azevedo
> wrote:
> > Pessoal, boa tarde.
> > Estava estudando aqui um pouquinho sobre awk, e cheguei no seguinte
> > problema:
> >
> > $ cat -E tmp/arquivos.txt
> > #/home/odin/shell/tmp/arquivo1.txt$
> > #/home/odin/shell/tmp/arquivo2.txt$
> > /home/odin/shell/tmp/arquivo3.txt$
> > #/home/odin/shell/tmp/arquivo4.txt$
> > /home/odin/shell/tmp/arquivo5.txt$
> >
> > o que eu quero é exibir isso tudo em 1 linha apenas, ignorando as linhas
> > que começam com #, exibindo apenas o nome do arquivo e seperando-os por ;
> > (obs, não é para ter ; no final do texto, apenas entre os nomes).
> >
> > eu consigo isso assim:
> > $ awk -F'/' '! /#/ { print $NF }' tmp/arquivos.txt | awk '{if
> > (NR==1){printf "%s",$0;}else{printf ";%s", $0;}}'
> > arquivo3.txt;arquivo5.txt
> >
> > eu tentei fazer isso assim:
> > $ awk -F'/' '! /#/ {if (NR==1){printf "%s",$NF;}else{printf ",%s",
> $NF;}}'
> > tmp/arquivos.txt
> > ,arquivo3.txt,arquivo5.txt
> >
> > mas não funciona, pq pra ele, o NR==1 é a primeira linha, arquivo1.txt,
> que
> > está comentada.
> >
> > Alguém sabe me dar uma luz de como fazer a mesma coisa com apenas 1
> > awk ?
> Para não mudar muito seu código, você poderia apenas usar uma variável
> auxiliar ao invés de NR:
>
> $ awk -F'/' '! /#/ {i++;if (i==1){printf "%s",$NF;}else{printf ",%s",
> $NF;}}' arquivo.txt
>
> usei "i" como variável.
>
> Pode-se também concaternar tudo numa variável escalar e só imprimir ao
> final ou mesmo armazenar num array para posterior manipulação. Exemplos:
>
> $ awk -F'/' '!/#/{s=(s)?s","$NF:$NF}END{print s}' arquivo.txt
>
> e
>
> $ awk -F'/' '!/#/{a[++i]=$NF}END{for(i in a){s=(i!=1)?",":"";printf
> s""a[i]}}' arquivo.txt
>
>
> > Desde já agradeço!!
> >
> > Alysson Gonçalves de Azevedo
> > (11) 8491-7730
>
> []'s.
> --
> "Não manejo bem as palavras
> Mas manipulo bem as strings."
> ------------------------------
> http://tecnoveneno.blogspot.com
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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