Unnötiges mit SED nach GREP entfernen?

S

sibbim

Grünschnabel
Hi,

ich hab da folgendes Problem... Die GREP Version, die
wir auf UNIX nutzen kennt noch nicht den Parameter "-o",
d.h. bei einem GREP wird mir immer die komplette gefundene
Zeile inkl Suchwort gezeigt:

grep -i -f datei_mit_suchbegriffen

dateiname.txt: unnötiger text [SUCHWORT] unnötiger text
dateiname2.txt: unnötiger text unnötiger text [SUCHWORT]


mit "-o" könnte es so aussehen:

dateiname.txt: [SUCHWORT]
dateiname2.txt: [SUCHWORT]


aber, da "-o" nicht funktioniert benötige ich eine Alternative...
...SED hat mich an dieser Stelle aber nicht Schlauer gemacht.
Ich bekomme es nicht hin "unnötiger text" aus dem GREP Ergebnis
zu entfernen :-(

Hat vielleicht jemand eine Idee?

Danke Sibbi
 
Wenn du sed verwenden willst, dann brauchst du kein grep.
Das Matchen kann sed selbst, und du sparst einen Prozess.

Da du aber von UNIX redest, schätze ich du hast kein GNU sed.

Alternativ stehen dir auch perl (portable) oder awk zur verfügung.

Ein paar Beispielzeilen und das gewünschte Ergebnis werden schon gebraucht, um konkret helfen zu können.

edit:
Ups ich sehe gerade du hast eine ganze Liste von Suchworten.
Dann ist grep wohl doch nicht verkehrt, da du das mit sed über eine Schleife realisieren müsstest.

Code:
grep -i -f"matchingfile" input |sed -e 's/regexp/replace/g' >outputfile
Aber wie gesagt: Beispieldaten.
Gruß Wolfgang
 
Zuletzt bearbeitet:
Leider nicht die Lösung

Hi,

danke für die schnelle Antwort.
Das ist leider nicht die Lösung. Ich hab es auch auf diesem
Wege versucht, aber das Problem ist, dass der Text der
entfernt werden soll in jeder Zeile anders ist - und wir sprechen
hier von vielen Zeilen - also:

dateiname1: dsfjhdöslfkjsdlkjfldf [SUCHWORT AUS DER GREP DATEI] hkjdhfjds
dateiname2:dfdfsdfsdf[SUCHWORT AUS DER GREP DATEI]öfjglkfjgkljfdlgjfldkgj
dateiname3:hkdjhfd[SUCHWORT AUS DER GREP DATEI]sd


und ich muss jetzt irgendwie den "Müll" zwischen dem Suchwort entfernen :-(

dateiname1: [SUCHWORT AUS DER GREP DATEI]
dateiname2: [SUCHWORT AUS DER GREP DATEI]
dateiname3: [SUCHWORT AUS DER GREP DATEI]


Gruß Sibbi
 
Wo ist das Problem?

Wenn du nur eine Datei nach vielen Begriffen durchsuchen willst, dann verwende sed mit einem Variablen Suchtext:
Code:
for i in $(cat datei_mit_suchbegriffen);
do
sed -e "/${i}/!d" -e "s/\([^:]*:\).*\(${i}\).*/\1 \2/" input
done

Gruß Wolfgang
 
Danke

Hallo Wolfgang,

vielen Dank - so gehts...

Gruß Sibbi
 

Ähnliche Themen

Koplizierte Sache.. AWK oder SED ??

Newbie sucht Hilfe: Zahl aus Datei mit grep/cut/sed lesen und schreiben?

ersetzen in einem Rückgabestring eines vorher ausgeführten Programms

Zurück
Oben