Bash/grep - Frage

seraphym

Cadet 4th Year
Registriert
März 2010
Beiträge
121
Guten Tag allerseits.

Ich bin hier grad an einem Problem mit grep dran. Folgender Wunsch:
Es gibt eine "parameter.txt" mit mehreren Begriffen, einer pro Zeile. Diese txt würde ich gerne an grep übergeben damit ein CSV durchsucht wird. Die Übergabe der Datei erfolgt mit grep -f parameter.txt. Soweit so gut.
Problem hierbei: grep sieht das als OR nicht als AND (was aber gewünscht ist).
Ein Beispiel hilft vielleicht.

parameter.txt sieht so aus:
SM-A520F
DE-DC

mit grep -f parameter.txt liste.csv durchsucht grep das CSV nach SM-A520F ODER DE-DC.

Hat jemand eine Idee?

Danke und Gruß,
Sera
 
Und was lernen wir daraus? Man muss nur Googlen können! :)
 
  • Gefällt mir
Reaktionen: PHuV
PHuV schrieb:
Für sowas macht man aber kein grep mehr, dafür gibts ein egrep.
egrep ist doch aber auch nur "grep -E"...
 
Das ist nicht das gesuchte. Wie ich das mache wenn ich die Patterns direkt an grep anhänge ist mir klar.
Mir geht es darum die Suchparameter aus einer separaten Datei zu holen.
 
kartoffelpü schrieb:
egrep ist doch aber auch nur "grep -E"...
Nein. Oder anders formuliert, vielleicht wurde mittlerweile (was ja häufiger passiert) in der Linux-Welt der normale grep kräftig erweitert, wie z.B. der find-Befehl. Aber in der Unix Welt gibt es schon immer erweiterte grep-Befehle wie egrep, fgrep, pgrep.
 
PHuV schrieb:
Hmm, dann lügt also die manpage?
1639047165708.png


Ansonsten wüsste ich gerne den Unterschied vor dir
 
Wie ich oben sagte, Ihr dürft immer nicht vergessen, daß Linux != Unix ist. Dann ist eben mittlerweile grep in Linux entsprechend erweitert worden. Steht ja bei Dir unten auch entsprechend unten in der letzten Zeile drin.

Wenn ich ein Programm unter Unix portabel halten wollten, würde ich hier eben kein grep -E, sondern eben egrep verwenden.
 
  • Gefällt mir
Reaktionen: foo_1337
grep macht von Natur aus nur "oder", fürs "und" brauchst du mehrere grep oder fiese Ausdrücke, so daß man doch mit einem anderen Tool besser dran ist
 
seraphym schrieb:
Mir geht es darum die Suchparameter aus einer separaten Datei zu holen.
Code:
SYNOPSIS
       grep [OPTION...] PATTERNS [FILE...]
       grep [OPTION...] -e PATTERNS ... [FILE...]
       grep [OPTION...] -f PATTERN_FILE ... [FILE...]

OPTIONS
   Matching Control
       -f FILE, --file=FILE
              Obtain patterns from FILE, one per line.  If this option is used multiple times or is combined with the -e (--regexp) option, search
              for all patterns given.  The empty file contains zero patterns, and therefore matches nothing.
Dann pass deine Datei entsprechend so an, dass das Pattern passt. Falls du alles pro Zeile haben willst, kommst du nun mal nicht drum herum die Datei vorher auszulesen und dir das Pattern entsprechend angepasst an grep ohne Datei zu übergeben.
 
Zurück
Oben