🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #7047

Re: Consulta Shell

#7047
From: Pascal Bourguignon
Date: Sat, 12 Apr 2003 23:49
76 lines
3688 bytes
triatlonn@terra.es (Stanley) writes:

> Gracias Pere y Pascal.
> 
> He conseguido hacer un bucle que me visualiza las lineas y me dice los
> caracteres por linea. Pero ahora quiero que me cuenta las palabras que
> tienen 1-cararcter  2-caracteres  3-caracteres y m�s caracteres, para
> cada linea.
> 
> Que al final me diga:
> 
> 1-linea  1c-xx   2c-xx   3c-xx   Resto-xx
> 2-linea  1c-xx   2c-xx   3c-xx   Resto
> .
> .
> .
> 
> Esto es lo que tengo, pero por mas intento no consigo hacerlo, podeis
> darme al guna sugerencia, por favor. Supongo que hay que hacer un
> bucle con wc -c, pero como le digo que para cuando acaba la palabra �
> la l�nea ?�??�?
> 
>  #!/bin/bash
>       
>       i=1                      #numero de lineas
> 
>       fichero=$1               #entra fichero
>       if [ ! $1 ]
>               then
>               echo "El fichero no existe"
>                 
>       else
>               echo "fichero correcto"
>               lineas=`cat $1 | wc -l`            #calculo el n�mero de l�neas
>               echo "numero de lineas total" $lineas
>               while [ $i -le $lineas ]
>               do
>                   t=`head -$i $1 | tail -1 | wc -c`
>                   echo "en la linea" $i "hay" $t "caracteres"
>                   i=`expr $i + 1`
>               done
> fi
> 
> 
> El fichero lo entro por par�metro. 
> 
> Un saludo.

Mejor asi:

#!/bin/bash
fichero="$1"  # usa doble-quotes por si el nombre contiene espacios.
if [ -f "$fichero" -a -r "$fichero" ] ; then # man test 
    echo "fichero correcto"
    echo "numero de lineas total" $( cat "$fichero" | wc -l )
    # la ventaja de $( ) sobre ` ` es que se puede incluir en si:
    # $( echo $( echo toto ) )
    i=1
    while read linea ; do
        echo "en la linea $i hay $( echo "$linea" | wc -c ) characteres."
        i=$(( $i + 1 )) # $(( )) lo hace bash el mismo; expr es otro programa
    done < "$fichero"
    # si no se usa un pipe con el while, bash no hace un subshell
    # y las variables dentro del while son las mismas que fuera
    #   entonces el numero final de linea leidas queda en $(( $i - 1 )):
    echo "numero de lineas total: $(( $i - 1 ))"
else
    echo "$fichero no es un fichero o no se puede leer."
fi



-- 
__Pascal_Bourguignon__                   http://www.informatimago.com/
----------------------------------------------------------------------
Do not adjust your mind, there is a fault in reality.
Technical Details
Message-ID: <87u1d3l1jc.fsf@thalassa.informatimago.com>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!newsfeed.freenet.de!fu-berlin.de!uni-berlin.de!thalassa.informatimago.COM!not-for-mail
References: <994c040b.0304111350.414087f7@posting.google.com> <slrnb9ej5k.114.ppujalARROBA@hola.fou.net> <8765pk9w43.fsf@thalassa.informatimago.com> <994c040b.0304121455.65edbb1b@posting.google.com>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,a25bc7d3540e92c3
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2003-04-12 16:49:45 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!newsfeed.freenet.de!fu-berlin.de!uni-berlin.de!thalassa.informatimago.COM!not-for-mail
From: Pascal Bourguignon <spam@thalassa.informatimago.com>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: Consulta Shell
Date: 13 Apr 2003 01:49:11 +0200
Organization: informatimago.com
Lines: 76
Message-ID: <87u1d3l1jc.fsf@thalassa.informatimago.com>
References: <994c040b.0304111350.414087f7@posting.google.com> <slrnb9ej5k.114.ppujalARROBA@hola.fou.net> <8765pk9w43.fsf@thalassa.informatimago.com> <994c040b.0304121455.65edbb1b@posting.google.com>
NNTP-Posting-Host: thalassa.informatimago.com (195.114.85.194)
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-Trace: fu-berlin.de 1050191384 13378165 195.114.85.194 (16 [41911])
User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3.50