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

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

Re: [shell-script] Imprimindo linhas enumeradas


From: Guilherme Gall
Subject: Re: [shell-script] Imprimindo linhas enumeradas
Date: Fri, 15 Aug 2008 00:44:59 -0300

Segue uma possibilidade:

$ cat exemplo.txt
asterion  9058  2.3  2.3  31820 12060 ?        Sl   19:10   0:00 smplayer
asterion  9062  3.0  2.3  31840 12052 ?        Sl   19:10   0:00 smplayer

$ while read LINHA; do echo "$((++i)) $LINHA"; done < exemplo.txt
1 asterion  9058  2.3  2.3  31820 12060 ?        Sl   19:10   0:00 smplayer
2 asterion  9062  3.0  2.3  31840 12052 ?        Sl   19:10   0:00 smplayer

A variável i assumiu o valor zero automaticamente porque eu não defini
um valor para ela. Usei pré-incremento (++i) e não pós-incremento
(i++) como você fez, para que a numeração começasse do um e não do
zero.

Saudações,

Guilherme Magalhães Gall

2008/8/14 Leonardo Bernardes <address@hidden>:
> ## Envio novamente pois, pelo costume, não enviei o email em plain
> text e imagino que ele não chegará até o grupo
>
> Boa noite, amigos
>
> Tenho uma dúvida, talvez até simples, vou ilustrá-la com um exemplo.
> Se eu tenho os seguintes dados de saída:
>
> $ ps aux |grep smplayer
> asterion  9058  2.3  2.3  31820 12060 ?        Sl   19:10   0:00 smplayer
> asterion  9062  3.0  2.3  31840 12052 ?        Sl   19:10   0:00 smplayer
> $ ps aux |grep smplayer > guardar.txt
>
> Os dados contidos nesse arquivo guardar.txt, se eu quiser imprimi-los
> na tela, enumerando cada uma das linhas, qual é a melhor opção? Mas
> vejam, eu não quero algo como cat -n, gostaria de poder manipular a
> forma como os números são exibidos. Eu descobri uma forma, mas
> considero ela uma tanto complexa, vejam:
>
> ct=1
> mat=$(cat guardar.txt |wc -l)
> while [ $ct -le $mat ]; do
>       echo -e "($ct): $(cat guardar.txt |awk 'NR == '$ct' { print $0 }')"
>       ((ct++))
> done
>
> Eu queria aprender a fazer via "for", aí entra outra dúvida, se eu uso
> algo como:
>
> for linha in $(cat guardar.txt) # ele retorna cada termo como um
> parâmetros posicional "asterion" "9058" ... e assim por diante
> se eu uso assim:
> for linha in "$(cat guardar.txt)" # ele retornar o bloco inteiro como
> um único parâmetro e também não adianta
>
> O "for" serve pra fazer isso que eu quero? é possível fazê-lo imprimir
> uma linha de cada vez? Qual é a maneira mais simples de fazer isso?
>
> Desde já agradeço
>
>
> Leonardo Bernardes
> Usuário Linux # 444329
> brausen.blogspot.com
>
> ------------------------------------
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como 
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
> aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em 
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
>
> Links do Yahoo! Grupos
>
>
>


reply via email to

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