[Linuxcantabria] txt a ASCII, uso de 'col', renombrar ficheros y máximo de una col de datos numéricos.

Luque Rodríguez luquesior2 en gmail.com
Vie Ago 10 19:02:00 CEST 2007


muchas gracias!!!! voy a intentar poner en práctica vuestros consejos
muy amables
y Miguel claro que no me molesta, es que soy un poco perro pa escribir y
segundo es que me da un poco de cosa cansar al personal con un mail
demasiado tedioso, pero la próxima vez pecaré por exceso
:)
Luque

On 8/10/07, Alex Perez <quimicefa en gmail.com> wrote:
>
> Yo con el primer tema del filtrado ya me quedaria contento, solo queria
> comentar que a veces cut hace cosas raras cuando hay mas de un separador
> seguido, por eso preferiría hacer la separación de campos con AWK.
>
> En cuanto al segundo tema "El maximo de la 1era columna de numeros", se
> puede hacer con algo parecido a:
> ------prog.awk--
>
> BEGIN {
>     max=0
> }
> {
>         if ($1 > max) {
>         max = $1
>         }
> }
> END {
>    print max
> }
> ----
>
>
> con lo que para que te diga el valor maximo de la 1era columna de un
> archivo
> seria:
>
> cat datos_filtrados.date | awk -F " " -f prog.awk
>
> Ma o meno
>
> Saludos...
>
> El día 10/08/07, Mario Brambilla Rueda <marbram en ono.com> escribió:
> >
> > Cuentan que, el 09 de Aug de 2007, Luque Rodríguez dijo:
> > > Hola:
> >
> > Hola.
> >
> > > tengo unos problemillas con la codificación de los textos de unos
> > scripts
> > > que he escrito usando el bloc de notas de windows (ya ya lo se, no
> > digais
> > > nada). El caso es que quiero saber si existe una forma cómoda para
> pasar
> > un
> > > txt a ASCII. He leído sobre la orden 'col' pero no me hace ni ...
> caso.
> >
> > No esta claro lo que quieres decir. Yo he tenido que convertir texto
> > de iso-8895-15 a formato utf-8. Lo tengo para un fichero concreto con
> > el siguiente guion. El programa "iconv" esta en el paquete "libc6"
> >
> > #!/bin/sh
> >
> > function continuarsn {
> > #--- Preguntar si continuar y terminar en caso contrario.
> >      if [ -n "$1" ] ; then
> >         echo -e "\n\n$1"
> >      fi
> >      REPLY=" "
> >      while [[ "$REPLY" != "s" \
> >              && "$REPLY" != "S" \
> >              && "$REPLY" != "n" \
> >              && "$REPLY" != "N" \
> >            ]]; do
> >         read -p "¿Continuar? (s/n): "
> >         if [[ "$REPLY" = "n" || "$REPLY" = "N" ]]; then
> >            exit 0
> >         fi
> >      done
> > }
> >
> >
> >
> ###############################################################################
> >
> > if [ -z "$1" ]; then
> >    echo "Falta el nombre del fichero."
> >    help
> >    exit -1
> > fi
> >
> > extf=$(date "+%F.%T")
> > codtxt="iso-8859-15"
> > if [ -n "$2" ];then codtxt="$2";fi
> >
> > iconv -f "$codtxt" -t utf-8 "$1" | less
> > continuarsn "Si esta conversión es válida, continue."
> > ftmp="tmp.$extf"
> > iconv -f "$codtxt" -t utf-8 "$1" -o "$ftmp"
> > mv -f "$ftmp" "$1"
> >
> >
> > > Son ficheros de datos, el caso es que después de "tratarlos", cambio
> la
> > coma
> > > decimal por punto para hacer los gráficos con gnuplot, les añado una
> > > extensión: por ejemplo: 'datos1.dat' pasa a ser 'datos1.dat.luq', no
> es
> > que
> > > me moleste pero es poco elegante, así que me gustaría que 'datos1.dat'
> > > después de ser tratado se llamase 'datos1_filtrados.dat' o 'datos1.fil
> '.
> > > Tengo que tratar numerosos ficheros, el script debe actuar sobre '
> > datos1.dat',
> > > 'datos2.dat', 'datos3.dat' ... etc
> > > Otro tema: Los ficheros de datos contienen tres columnas numéricas, me
> > > interesa saber el máximo valor de la primera columna (carga) por
> > ejemplo,
> > > ¿cómo hago?
> >
> > Un posible guion seria algo asi.
> >
> > #!/bin/sh
> >
> > function fext {
> > #--- Devuelve en la variable fext la extension del nombre del fichero
> > dado.
> > fext="."`echo $1|awk -F "." '{print $NF}'`
> > }
> >
> > function fnomb {
> > #--- Devuelve en la variable fnomb el nombre sin extension del nombre
> del
> > fichero dado.
> > fnomb=`echo "$1" \
> >        | awk -F. '{ nombre=$1 ; for(var=2 ; \
> >                     var<NF ; var=var+1) nombre=nombre "." $var ; print
> > nombre }'`
> > }
> >
> >
> >
> ###############################################################################
> >
> > for fent in *.dat; do
> >     fnomb "$fent"
> >     echo -ne "$fent => maximo columna 1 = "
> >     cut -f 1 -d' ' "$fent" | sort -nr | head -1
> >     # filtrar "$fent" >"$fnomb"_filtrado.dat
> >     echo "Fichero filtrado: $fnomb\_filtrado.dat"
> > done
> >
> >
> > > Muchas gracias a todos/as
> > > Luque
> >
> > Espero que te sirva para algo.
> > _______________________________________________
> > Linuxcantabria mailing list
> > Linuxcantabria en linuca.org
> > http://linuca.org/mailman/listinfo/linuxcantabria
> > ¿Conoces las sugerencias de uso? -> http://linuca.org/link/?l45
> >
>
>
>
> --
> 3rd Law of Computing:
> Anything that can go wrSegmentation fault -- core dumped.
> _______________________________________________
> Linuxcantabria mailing list
> Linuxcantabria en linuca.org
> http://linuca.org/mailman/listinfo/linuxcantabria
> ¿Conoces las sugerencias de uso? -> http://linuca.org/link/?l45
>


Más información sobre la lista de distribución Linuxcantabria