Linux/Unix Shell Scripting - Leer linea a linea un fichero y buscarla con grep

 
Vista:

Leer linea a linea un fichero y buscarla con grep

Publicado por Paco (5 intervenciones) el 24/01/2018 05:28:45
Buenas estoy intentando crear un script que lea linea a linea un archivo para compararlo con otro y en caso de que coincida que me lo diga.

Los ficheros:
a.txt
a
b
c
b.txt
a:1
c:2
d:4


1
2
3
4
5
#!/bin/bash
for linea in $(cat $1)
do
grep "$linea" $2
done

1
sudo bash script.sh a.txt .b.txt

Pero el grep no busca las palabras, si me podeis ayudar sería de gran utilidad.

Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Leer linea a linea un fichero y buscarla con grep

Publicado por Tom (361 intervenciones) el 24/01/2018 15:35:58
sudo bash -c "script.sh a.txt b.txt"

Por cierto, casi todo el mundo hace igual la lectura con for y cat, pero no es una buena forma, simplemente porque consume bastante memoria si los ficheros son grandes y porque puede dar resultados inesperados si hay espacios en blanco en las líneas.

1
2
3
4
while read linea
do
   grep "$linea" "$2"
done < $1
o
1
2
3
4
while linea=$(line)
do
...
done < $1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Leer linea a linea un fichero y buscarla con grep

Publicado por Paco (5 intervenciones) el 24/01/2018 17:51:09
Muchísimas gracias por la información, me funciona a la perfección.

Me gustaría saber como se podría hacer que si grep no encuentra la linea haga un comando, ¿como puedo ponerlo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Leer linea a linea un fichero y buscarla con grep

Publicado por Paco (5 intervenciones) el 24/01/2018 19:51:15
Me auto respondo, gracias por todo.
1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
while read linea
do
i=$(grep "$linea" "$2")
if [ `grep $linea $2 | wc -l` -eq 0 ]
then
	echo "$linea:Not Found"
else
	echo "$i"
fi
 
done < $1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 50
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

Leer linea a linea un fichero y buscarla con grep

Publicado por caic (99 intervenciones) el 25/01/2018 09:43:30
Más sencillo :)

1
2
3
4
5
6
#!/bin/bash
 
while read linea
do
grep "$linea" "$2" || echo "$linea:Not Found"
done < $1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar