Hi,
ich habe ein Shell-Skript, das eine Liste definiert:
LIST=" Eintrag1 Eintrag2 Eintrag3 "
und ein Kommando, dass ebenfalls eine Liste ausgibt:
$(command)
Nun möchte ich alle Einträge, die in $LIST enthalten sind aus der Ausgabe des Kommandos entfernen. Quasi
$(command) | grep -xv -e Eintrag1 -e Eintrag2 -e Eintrag3
Würde ich mit Dateien arbeiten, müsste folgendes gehen:
result="$(command | grep -xv -f LIST.txt)"
Nun möchte ich aber keine temporäre Datei schreiben, sondern würde lieber mit der Variable arbeiten. Ich dachte nun, dass vielleicht folgendes funktioniert:
echo "${LIST}" | grep -xv -f - <$(command)
Das funktioniert aber nicht. uniq, das sich ebenfalls anbietet, arbeitet aber auch eher mit Dateien. Eigentlich ist mein Problem simpel. Ich finde aber auch online nichts, was mit weiterhilft.
Kann mir bitte jemand helfen?
Gruß, Daniel
Hallo,
On Fri, Jan 08, 2021 at 03:34:29PM +0100, Daniel Leidert wrote:
Nun möchte ich alle Einträge, die in $LIST enthalten sind aus der Ausgabe des Kommandos entfernen.
$command | grep -v $(echo $LIST | sed -e 's/ /\|/g')
Grüsse Andreas
Daniel Leidert daniel.leidert.spam@gmx.net (Fr 08 Jan 2021 15:34:29 CET):
Hi,
ich habe ein Shell-Skript, das eine Liste definiert:
LIST=" Eintrag1 Eintrag2 Eintrag3 "
und ein Kommando, dass ebenfalls eine Liste ausgibt:
$(command)
Nun möchte ich alle Einträge, die in $LIST enthalten sind aus der Ausgabe des Kommandos entfernen. Quasi
$(command) | grep -xv -e Eintrag1 -e Eintrag2 -e Eintrag3
```shell LIST=" 10 8 9 "
# variante a comm -13 <(<<<$LIST sort) <(seq 1 10|sort)
# variante b seq 1 10 | grep -xv -f <(echo "$LIST") ```
Am Freitag, dem 08.01.2021 um 16:27 +0100 schrieb Heiko Schlittermann:
[..]
LIST=" 10 8 9 " # variante a comm -13 <(<<<$LIST sort) <(seq 1 10|sort) # variante b seq 1 10 | grep -xv -f <(echo "$LIST")
Das funktioniert beides nur Shells, die Process Substitution unterstützen. Mit /bin/sh bekomme ich eine Fehlermeldung. Ich wäre gerne Shell-unabhängig. Zur Not müsste ich das Skript explizit unter der Bash laufen lassen.
Danke dir dennoch.
Gruß, Daniel
lug-dd@mailman.schlittermann.de