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

Script de búsqueda y copia en nuevo fichero

Estas en el tema de Script de búsqueda y copia en nuevo fichero en el foro de Unix / Linux en Foros del Web. Hola. Desde la facultad en primer curso que no toco nada de scripts linux por eso me he dejado caer por aquí a ver si ...
  #1 (permalink)  
Antiguo 21/10/2012, 05:38
 
Fecha de Ingreso: junio-2004
Mensajes: 57
Antigüedad: 20 años, 6 meses
Puntos: 0
Script de búsqueda y copia en nuevo fichero

Hola.
Desde la facultad en primer curso que no toco nada de scripts linux por eso me he dejado caer por aquí a ver si alguien me puede orientar.

La idea de lo que quiero hacer es recorrer todos los archivos de una carpeta *.c, buscar en ellos una cadena del tipo '{var}' y todas las coincidencias de este tipo me las guarde en un fichero con el mismo nombre pero con extensión .txt y con el formato ' variable encontrada: var '.

De lo que recuerdo habia un comando que encontraba patrones pero que te devolvía el fichero en el que se encontraba, quizás algo similar a eso?

Gracias de antemano
  #2 (permalink)  
Antiguo 21/10/2012, 13:26
Avatar de rafa2300  
Fecha de Ingreso: octubre-2011
Mensajes: 24
Antigüedad: 13 años, 2 meses
Puntos: 3
Respuesta: Script de búsqueda y copia en nuevo fichero

bueno para realizar la búsqueda tienes que ingresar este comando

find *.var #tienes que estar posesionado en la carpeta que quieras buscarlo

para crear el archivo es con el comando

cat > archivo.txt
> Esta es la primera linea debes escribir lo que quieras que aparezca aqui
> Esta es la segunda linea debes escribir lo que quieras que aparezca aqui
>...
>...
> ... " para finalizar presiona ctrl +d"
  #3 (permalink)  
Antiguo 22/10/2012, 06:14
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Script de búsqueda y copia en nuevo fichero

find <- para encontrar todos los archivos*.c (aunque no es necesario si están todos en la misma carpeta)
grep <- para buscar texto en los archivos.

Con IF puedes hacer algo si y solamente si grep encuentra el texto en cada archivo :)
  #4 (permalink)  
Antiguo 22/10/2012, 13:16
 
Fecha de Ingreso: junio-2010
Ubicación: Temuco, Chile
Mensajes: 20
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Script de búsqueda y copia en nuevo fichero

Y los dos comandos unidos

grep -i "Texto a buscar" ´find . -name "*.*"´

la -i es para que no distinga entre mayúsculas y minusculas
  #5 (permalink)  
Antiguo 22/10/2012, 13:35
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Script de búsqueda y copia en nuevo fichero

Pues en realidad en ese caso es mejor usar la opción -exec de find, o xargs, en vez de darle a grep la salida de find.
  #6 (permalink)  
Antiguo 23/10/2012, 09:59
 
Fecha de Ingreso: junio-2004
Mensajes: 57
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Script de búsqueda y copia en nuevo fichero

Creo que quizás no me he explicado bien ya que no quiero encontrar una cadena única, sino un patrón en particular definido por corchetes

A ver, la idea es la de tener un fichero "ejemplo.c" en el que nos podemos encontrar cadenas de este tipo...
Código:
for(i=0; i!=10;i++){
   {$_un_texto};
   {111111111};
   {hola que tal};
}
Lo que quiero hacer es un script que para cada fichero *.c que haya en su carpeta lo abra, busque todas las cadenas con la estructura {un_texto_cualquiera} y lo que haga sea copiar el contenido que hay dentro del separador (es decir, un_texto_cualquiera) a un fichero nuevo que se llame del mismo nombre que el inicial es decir, ejemplo.txt con una estructura concreta del tipo: variable encontrada: "un texto cualquiera"

siento si no me he explicado correctamente.
  #7 (permalink)  
Antiguo 23/10/2012, 10:57
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Script de búsqueda y copia en nuevo fichero

Creo que grep no es la herramienta apropiada (ya que no puede capturar texto), yo usaría SED o AWK. Ejemplo:

Código bash:
Ver original
  1. find /carpeta -name "*.c" -exec sh mi_script.sh "{}" \;

mi_script.sh
Código bash:
Ver original
  1. sed -n 's/{\(.*\)}/variable encontrada: \1/gp' $1 > $1.txt

El comando anterior de sed busca líneas que contengan {}, captura el texto entre ellas, lo sustituye por el texto que te interesa, y lo guarda a un archivo del mismo nombre pero con extensión TXT.


Saludos.
  #8 (permalink)  
Antiguo 24/10/2012, 03:42
 
Fecha de Ingreso: junio-2004
Mensajes: 57
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Script de búsqueda y copia en nuevo fichero

Hola Alvaro.
He probado la adaptación del ejemplo que me has puesto pero da un error

Código:
find /Plantillas -name "*.c" -exec sh busqueda_reemplazo.sh "{}"
find: missing argument to `-exec'
He probado lo mismo pero en vez de poner "-exec sh busqueda_reemplazo.sh" he puesto "-exec ./busqueda_reemplazo.sh "{}"" obviamente con el mismo resultado

Tienes idea de porque puede ser?
Gracias por la ayuda
  #9 (permalink)  
Antiguo 24/10/2012, 06:08
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Script de búsqueda y copia en nuevo fichero

si, es porque te falta el \; al final. Ese punto y coma escapado es el que delimita el comando -exec

Etiquetas: comando, copia, fichero, ip, linux
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 12:30.