Guten morgen liebe Forenmitglieder,
da ich etliche Jahre in Sachen Linux pausiert habe und nun wegen beruflichem Wechsel wieder dort einsteige hab ich im Moment ein kleines Problem bei dem Ihr mir sicherlich helfen könnt. ich sehe grad jedenfalls den Wald vor lauter Bäumen nicht mehr.
Problemstellung :
Ich soll aus einer Textdatei Zeilen herausfiltern und in eine neue Datei schreiben. Als Kriterien gibt es drei sog. NTNummern (mit ODER verknüpft) und eine MD_Nr (mit AND verknüpft).
Also wenn eine Zeile mit NTNummer1 UND MD_Nr = 5000 auftaucht dann bitte in die neue Datei schreiben. Wenn eine Zeile mit der NTNummer1 UND der MD_Nr = 4999 auftaucht dann NICHT in die Datei schreiben.
So weit so gut.
Mittels grep habe ich die Filterung auch so weit hin bekommen.
grep -e "#= NTNummer \"5010376" -e "#= NTNummer \"5010385" -e "#= NTNummer \"5010365" datei | grep "#= MD_Nr \"5000" > neueDatei
Nun mein Problem. Wie lösche ich im Anschluss diese Zeile aus der Originaldatei bzw. lege eine weitere Datei mit den übrigen Zeilen an ?
grep -v -e "#= NTNummer \"5010376" -e "#= NTNummer \"5010385" -e "#= NTNummer \"5010365" datei | grep -v "#= MD_Nr \"5000" > rest
bzw.
grep -v -e "#= NTNummer \"5010376" -e "#= NTNummer \"5010385" -e "#= NTNummer \"5010365" datei | grep "#= MD_Nr \"5000" > rest
Bei sed bekomme ich im moment lediglich hin, dass er mir die einzelnen Kriterien aus der Datei löscht aber nicht die UND-Verbindung zwischen NTNummer und MD_Nr
sed '/\(#= NTNummer "5010376"\) /d' datei > rest
bzw.
sed '/\(#= MD_Nr "5001"\)/d' datei > rest
Habt ihr auf den ersten Blick einen Tipp für mich wo ich ansetzen kann oder wie ich die Befehle anders aufbauen muss, damit das ganze funktioniert. Die man-Pages bringen mich im Moment hier nicht weiter.
Vielen Dank schonmal und schöne Grüße aus Hamburg
Michael