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: jimmy
Subject: Re: [shell-script] Remover, substituir e inserir chars em um arquivo.
Date: Fri, 20 Jan 2012 22:19:25 -0200
User-agent: mutt-ng/devel-r804 (Linux)

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


reply via email to

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