[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