Foros del Web » Programación para mayores de 30 ;) » Programación General »

busquedas... mostrar dos lineas...

Estas en el tema de busquedas... mostrar dos lineas... en el foro de Programación General en Foros del Web. hola, tengo un problemilla con un script. el caso es que me funciona correctamente, ya que me hace las busquedas, pero lo que quiero es ...
  #1 (permalink)  
Antiguo 26/06/2006, 03:20
 
Fecha de Ingreso: junio-2003
Mensajes: 122
Antigüedad: 20 años, 10 meses
Puntos: 0
Pregunta busquedas... mostrar dos lineas...

hola,

tengo un problemilla con un script.
el caso es que me funciona correctamente, ya que me hace las busquedas, pero lo que quiero es que me muestre dos lineas completas.
El script busca en un fichero plano los campos parecidos a lo que introduzca, entonces, me gustaría que cuando encuentre algún campo me muestre los resultados pero cogiendo las dos lineas...

este es el script:

Código:
# Global variables
film=/opt/etc/film/film.txt
export film

confirm()
{
  echo -en "$@"
  read ans
  ans=`echo $ans | tr '[a-z]' '[A-Z]'`
  if [ "$ans" == "Y" ]; then
    return 0
  else
    return 1
  fi
}

num_lines()
{
  grep -i "$@" $film|wc -l| awk '{ print $1 }'
}

find_lines()
{
  # Busca lineas de entrada $1
  res=-1
  if [ ! -z "$1" ]; then
    grep -i "$@" $film
    res=$?
  fi
  return $res
}

list_items()
{
  # Lista los resultados encontrados
  if [ "$#" -eq "0" ]; then
    echo -en "Buscar usuario: (en blanco muesta toda la lista): "
    read search
    if [ -z "$search" ]; then
      search="."
    fi
    echo
  else
    search="$@"
  fi
  find_lines "${search}" | while read i
  do
    echo "$i" | tr ':' '\t'
  done
  echo -en "Encontrados: "
  num_lines "$search"
}

add_item()
{
  echo
  echo
  echo
  echo "          NUEVA PELI"
  echo " COMPLETA TODOS LOS DATOS"
  echo "  - AÑO MES DIA DIRECTOR TIPO - "
  echo
  echo -en "Nombre: "
  read name
  find_lines "^${name}:"
  if [ `num_lines "^${name}:"` -ne "0" ]; then
    echo "Pelicula, $name ya existe en el fichero."
    return
  fi
  echo -en "Año: "
  read "ano"
  echo -en "Director: "
  read filmaker
  echo -en "Genero:"
  read genre
  echo -en "Calificacion:"
  read calification

  # Confirmacion
  echo "${name} AnoPelicula=${ano}
        ${calification}, ${filmaker}, ${genre}" >> $film
  echo
  echo
  echo -en "--> ALTA FILM"
  echo
  echo
}

locate_single_item()
{
  echo -en "Peli a buscar: "
  read search
  n=`num_lines "$search"`
  if [ -z "$n" ]; then
    n=0
  fi
  while [ "${n}" -ne "1" ]; do
    #list_items "$search"
    echo -en "${n} peli encontrada. Selecciona una "
    case "$n" in
      "0") echo "menos" ;;
      "*") echo "mas" ;;
    esac
    echo "especifica un patron de busqueda (q para volver al menu anterior): "
    read search
    if [ "$search" == "q" ]; then
      return 0
    fi
    n=`num_lines "$search"`
  done
  return `grep -in $search $film |cut -d":" -f1`
}

#remove_item()
#{
#  locate_single_item
#  search=`head -2 $film`
#  if [ -z "${search}" ]; then
#       return
#  fi
#  list_items "$search"
#  confirm "Borrar?"
#  if [ "$?" -eq "0" ]; then
#    grep -v "$search" $film > ${film}.tmp ; mv ${film}.tmp ${film}
#  else
#    echo "NO BORRADO"
#  fi
#}

edit_item()
{
  locate_single_item
  search=`head -$? $film | tail -1|tr ' ' '.'`
  if [ -z "${search}" ]; then
        return
  fi
  list_items "$search"
  thisline=`grep -i "$search" $film`
  oldname=`echo $thisline|cut -d"" -f1`
  oldano=`echo $thisline|cut -d"," -f2`
  oldfilmaker=`echo $thisline|cut -d"," -f3`
  oldcalification=`echo $thisline|cut -d"," -f4`
  oldgenre=`echo $thisline|cut -d"," -f5`

  echo "BUSCAR : $search"
  grep -v "$search" $film > ${film}.tmp ; mv ${film}.tmp ${film}
  echo -en "Pelicula [ $oldname ] "
  read name
  if [ -z "$name" ]; then
    name=$oldname
  fi
  find_lines "^${name}:"
  if [ `num_lines "^${name}:"` -ne "0" ]; then
    echo "La pelicula, $name esta en el fichero."
    return
  fi
  echo -en "ano [ $oldano ] "
  read ano
  if [ -z "$ano" ]; then
    ano=$oldano
  fi
  echo -en "Pelicula [ $oldfilmaker ] "
  read filmaker
  if [ -z "$filmaker" ]; then
    filmaker=$oldfilmaker
  fi
  echo "${name}:${ano}:${filmaker}" >> $film
}

alguien me puede decir, como hago para que me muestre las dos lineas..¿??

gracias.

takezo

Última edición por startwav; 26/06/2006 a las 06:04
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:45.