• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[solved] Ausgabe von 'grep' ein Leerzeichen?

Hi,
nur eine Verständnisfrage..
wieso gibt 'grep', wenn es nichts findet, ein Leerzeichen aus?
Im konkreten Beispiel geht es darum, zwei Dateien zeilenweise zu vergleichen:
Code:
	for i in `cat $tmp0` ; do

		expr=`grep -z "$i" $tmp1`

			# Wenn 'grep' nichts findet,
			# ist die Ausgabe immer noch ein Leerzeichen:

		if [ "$expr" = ' ' ] ; then
			echo $i
		fi	
	done
tom

BTW1:
"for i in `cat $tmp0`" funktioniert wohl nur, weil die jeweilige Zeile kein Space enthält,
geht sonst nur :
"cat $tmp0 | while read i ; do ..."
oder gibt's noch andere Wege, zeilenweise auszulesen?

BTW2:
Warum werden in Variablen immer die Leerzeichen 'eingedampft' ?
 
oder gibt's noch andere Wege, zeilenweise auszulesen?
Ja, aber mit bash wird's haarig weil Dateinamen auch mehrere Zeilen lang sein dürfen. (Siehe a.a.O.) Eingedampft, weil das so in $IFS festgelegt ist.
wieso gibt 'grep', wenn es nichts findet, ein Leerzeichen aus?
Hat mit grep nichts zu tun, wie ein
Code:
echo "$gibtsnicht"
zeigt. echo fügt eben generell ein Newline an.

Wieso nimmst du nicht einfach `diff -dpru a b`, um zwei Dateien zu vergleichen?
 
Sorry- hab mich hier fehlleiten lassen.
Die Ursache, warum's hier nicht klappen will, ist, dass der zu bearbeitende Text Zeichen enthält, auf die Grep reagiert.
Wie: * ^ aber auch [:digit:].
Nahm irttümlich an, dazu wäre die Option -e (oder egrep) erforderlich.
Jetzt stellt sich die Frage, wie bringe ich grep dazu, dies zu ignorieren (ohne extra alles maskieren zu müssen).
tom
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OK, vielen Dank soweit, es geht tatsächlich viel einfacher mit diff !!!
 
Und würde man grep verwenden, wäre es sowieso besser, den Rückgabewert von grep zu prüfen. In etwa so:
Code:
if grep -q "test" file.txt
then
  echo "grep hat was gefunden"
else
  echo "grep hat nichts gefunden"
fi
 
Oben