Foros del Web » Administración de Sistemas » Unix / Linux »

Saber si una cadena esta dentro de otra

Estas en el tema de Saber si una cadena esta dentro de otra en el foro de Unix / Linux en Foros del Web. Buenas, ¿Conocéis alguna manera distinta, más eficaz que no sea con el grep de averiguar si una palabra está dentro de una cadena de texto? ...
  #1 (permalink)  
Antiguo 23/11/2009, 06:52
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 9 meses
Puntos: 20
Saber si una cadena esta dentro de otra

Buenas,

¿Conocéis alguna manera distinta, más eficaz que no sea con el grep de averiguar si una palabra está dentro de una cadena de texto?

Por ejemplo en php existen funciones para saber si la palabra "casa" está dentro de "me gustaría renovar la casa"

En bash la única forma que se me ocurre es con el grep, o usando expresiones regulares en el grep...

echo "me gustaría renovar la casa" | grep casa

Sería genial poder hacer un if [ 'casa' in cadena ] then.... pero no funciona.

Muchas gracias de antemano!
  #2 (permalink)  
Antiguo 23/11/2009, 10:02
Avatar de Claw  
Fecha de Ingreso: abril-2009
Mensajes: 299
Antigüedad: 15 años, 8 meses
Puntos: 9
Respuesta: Saber si una cadena esta dentro de otra

En el primer enlace de Google me salió:

http://enavas.blogspot.com/2008/03/e...ulacin-de.html

Cita:
Podemos averiguar cual es la posición de una cadena dentro de otra, utilizando las siguiente expresión:

expr index cadena_donde_buscar cadena_a_buscar

Devuelve la posición donde encuentra los caracteres a buscar dentro de la cadena, si no, devuelve un 0.

Ejemplo:
micadena="Bienvenido al mundo de Linux"
cadenaabuscar="Linux"
echo “La cadena $buscar se encuentra en la pos `expr index $micadena $cadenaabuscar`”
Como podemos ver, index busca una cadena, pero si lo que queremos utilizar como patrón de búsqueda es una expresión regular, usaremos:

expr match cadena_donde_buscar patrón_caracteres_buscar

Ejemplo:
cadena="342 ovejas en el redil"
numero=`expr match $cadena [0-9]*`
echo "El número de dígitos al comienzo de la cadena $cadena es: $numero"
Salu2
  #3 (permalink)  
Antiguo 23/11/2009, 10:55
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 9 meses
Puntos: 20
Respuesta: Saber si una cadena esta dentro de otra

Cita:
Iniciado por Claw Ver Mensaje
En el primer enlace de Google me salió:

http://enavas.blogspot.com/2008/03/e...ulacin-de.html



Salu2
Muchas gracias Claw, hoy estás que te sales
  #4 (permalink)  
Antiguo 23/11/2009, 11:18
Avatar de Claw  
Fecha de Ingreso: abril-2009
Mensajes: 299
Antigüedad: 15 años, 8 meses
Puntos: 9
Respuesta: Saber si una cadena esta dentro de otra

Me alegro que lo solucionaras

Salu2!
  #5 (permalink)  
Antiguo 24/11/2009, 15:44
Avatar de Theoden  
Fecha de Ingreso: abril-2009
Mensajes: 28
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Saber si una cadena esta dentro de otra

Con awk puedes saber si esta la palabra o no:

awk '/casa/{i=i+1}END{print i}' file.txt

y para sustituir puedes usar sed:

sed 's/casa/mansion/g' file.txt
solo que sed no escribe el fichero sino que lo muestra como salida lo que tienes que hacer es guardarlo y entonces sobreescribir el fichero completamente...

Espero te haya sido de utilidad...
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 20:33.