Archiv verlassen und diese Seite im Standarddesign anzeigen : Textdatei nach String durchsuche und ganze Zeile ausgeben
Hi.
Ich möchte in einem Script eine Textdatei durchsuchen lassen und die Zeile in der der die Zeichenkette steht ausgeben lassen. Bzw sind es eigentlich nur die nächsten paar Buchstaben. Gibt es einen Befehl der das kann in der konsole?
grep ist dein freund
oder grep | sed
Thomas
Und wie genau, wenn ich fragen darf?
Ich schaffe es nur den String an sich auszugeben. Aber den gebe ich ja auch ein, also bringt es mir nichts.
Und wie genau, wenn ich fragen darf?
Ich schaffe es nur den String an sich auszugeben. Aber den gebe ich ja auch ein, also bringt es mir nichts.
cat /pfad/txt | grep zeichenkette
oder direkt die textdatei an grep übergeben, man grep
Genau. Und mit einem weiteren angehängten "sed" Befehl könnte man nach Teile der gefundenen Zeile herausschälen:
cat datei.txt | grep suchstring | sed "s/PATTERN/REPLACEMENT/"
Das Pattern um etwas WEG-zuschälen ist etwas komplizierter. Prinzipiell müsstest du die gesamte Zeile beschreiben
^.*suchtext\(.*\)$
d.h. Zeilenanfang - beliebige Zeichen - Suchtext - beliebige Zeichen - Zeilenende
durch die Klamern kann man die zweite Gruppe beliebiger Zeichen im Replacement durch \1 adressieren.
Der Tausch tauscht also die ganze Zeile gegen \1 aus.
Greetz
Thomas
man grep
man sed
irgendwie will das nicht funktionieren. Mal ganz einfach angekommen: Ich habe die Zeichenkette die überarbeiten will mit:
Suchstring: hallo
Ersatzstring: muh
Dann soll er mir die den Text durchsuchen und hallo durch muh ersetzen. Das würde ich so machen:
sed /"hallo"/"muh"
Funktioniert natürlich nicht annähernd. Kann mir das mal bitte einer genau erklären?
Danke schon mal im Voraus.
...| sed "s/hallo/muh/"
Wird dich aber nur indirekt weiterbringen, weil du ja nicht das Suchpattern austauschen willst, sondern alles löschen ausßer den paar Zeichen nach dem SUchpattern.
Greetz
Thomas
Vom Verständnis hat es mich viel weiter gebracht.
Noch eine Frage: Gibt es eine Möglichkeite einen Audruck zu verneinen? Wie das ! bei C++ ?
Vom Verständnis hat es mich viel weiter gebracht.
Noch eine Frage: Gibt es eine Möglichkeite einen Audruck zu verneinen? Wie das ! bei C++ ?
Wo?
Meistens ja. Bei grep ist das ein spezieller Schalter (alle Zeilen die Suchmuster NICHT enthalten). (man grep)
Bei obigem sed-Beispiel macht Negation keinen Sinn, oder?
Es gibt gute Bücher und Büchlein zum Thema "sed, awk und Reguläre Ausdrücke" (O`Reilly zB). Lohnt sich - braucht man unter Linux ständig!
Greetz
Thomas
Ah. Danke. Hast mir viel geholfen. Ich habe es jetzt hinbekommen.
Übers Buch werd ich sicherlich nachdenken und mir auch holen, wenn ich mal wieder in Geld schwimme.
Danke nochmals.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.