PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : vi oder grep profi gesucht



wer_ner
18-07-2006, 12:24
Hi,

Mein gestern schon genanntes Problem ist noch vorhanden. Nun habe ich zwei Ideen:
- entweder mit dem vi im Batchmodus in einer Datei nach dem Wort "description:" suchen und von dort bis zum Dateiende die gesamten Zeilen in eine weitere Datei schreiben,
- oder aber einen Dateivergleich mit grep:
while read i ; do grep "$i" test1.txt ; [[ $? == 1 ]] && echo $i >> test3.txt ; done<test2.txt

Erläuterung: in der Datei test1.txt sind Zeilen enthalten, die in der Datei test2.txt fehlen. Diese sollen durch einen "negativen" grep-Vergleich gefunden werden und in die Datei test3.txt geschrieben werden. Funktioniert aber nicht. Datei test3.txt bleibt leer.

Habt ihr Ideen oder Anregungen?

Danke,
Werner

Detrius
18-07-2006, 12:49
Wieso nicht diff nehmen, dass ja gerade für sowas gedacht ist?

wer_ner
18-07-2006, 13:43
weil dann der gesuchte Text mehrfach auftaucht,
dazu weitere Informationen zu den Unterschieden
der Dateien usw.

Zumindest weiß ich nicht, wie man das unterdrückt.

Werner

zst
18-07-2006, 21:47
Erläuterung: in der Datei test1.txt sind Zeilen enthalten, die in der Datei test2.txt fehlen. Diese sollen durch einen "negativen" grep-Vergleich gefunden werden und in die Datei test3.txt geschrieben werden. Funktioniert aber nicht. Datei test3.txt bleibt leer.

Hallo wer_ner,

mir scheint, Du suchst nur falsch rum ...
Du schreibst, dass in der test1.txt Zeilen enthalten sind, die in der test2.txt fehlen,
diese fehlenden Zeilen sollen aber gefunden werden.
Du gibst dem $i aber den Inhalt aus test2.txt.
Es kann aber nicht in test1.txt nach etwas gesucht werden, was nie dem $i zugewiesen wird ...
Oder ? ;)

Gruss zst

wer_ner
19-07-2006, 06:59
Du hast recht und so funktioniert es dann auch.

Andere Lösung, wen`s interessiert:

sed -n -e '/description:/,$p' test1.txt > testx.txt

Werner

Stefan Feeser
23-07-2006, 09:33
Hallo,

nur mal so als Hinweis, mit grep -v kannst Du Deine Suchmuster auch invertieren. Wenn Du also z. B. mit grep -i Suchmuster1 den Text durchsuchst und dann dieses Ergebnis nach grep -v pipst und hier eben nach einem zweiten Suchmuster durchsuchst, welches eben nicht ausgegeben werden soll, funktioniert das in vielen Fällen auch.

Beispiel:


grep -i Suchmuster1 Datei | grep -v Suchmuster2


Gruss

Stefan