Herramientas Personales
Usted está aquí: Inicio Cursos Curso de administración de servidores GNU/Linux 2015 Ejercicios Unidad 2. Versión compreta de numrep.sh

Unidad 2. Versión compreta de numrep.sh

por Juan Chico, Jorge Última modificación 02/05/2014 15:46

numrep.sh — text/x-sh, 1Kb

Contenido del Archivo

#!/bin/bash
#
# numrep.sh: cuenta palabras en un texto
#
# 2013-04-24 Jorge Juan <jjchico@gmail.com>
# Este programa está en el dominio público.

prog=`basename $0`   # nombre del programa
lines=10             # número predeterminado de palabras a listar
order="-r"           # orden predeterminado (de mayor a menor)

while [[ "$1" =~ ^- ]]; do
    case "$1" in
        -h) cat << EOF
$prog: muestra las palabras más (menos) repetidas en un texto.
Uso: $prog [-h] [-r] [-n N] [<archivo>]
  -h:   Muestra esta ayuda.
  -r:   Orden inverso (de menor a mayor).
  -n N: Muestra las N palabras más repetidas (menos repetidas con '-r').
        Si N=0, muestra todas las palabras.
        Sin la opción, muestra sólo 10 palabras.
Si no se indica <archivo> se leerá de la entrada estándar.

EOF
            exit 1
            ;;
        -n) if [[ "$2" =~ [^0-9] ]]; then
                echo "$prog: el parámetro de '-n' debe ser un número"
                echo "Pruebe: '$prog -h' para ayuda."
                exit 1
            else
                lines="$2"
                shift
            fi
            ;;
        -r) order=""
            ;;
        -*) echo "$prog: opción desconocida '$1'."
            echo "Pruebe: '$prog -h' para ayuda."
            exit 1
            ;;
    esac
    shift
done

if [ "X$*" == "X" ]; then
    cat
else
    cat "$@"
fi |
tr -sc A-Za-z '\012' |
sort |
uniq -c |
sort -n $order |
if [[ "$lines" == "0" ]]; then
    cat
else
    head -"$lines"
fi
Acciones de Documento