Die einfachste Antwort ist die Verwendung einer Folge von grep
Anrufen: -
grep 'A1' filename | grep 'A2' | grep 'A3'
Um mit einer unabhängigen Anzahl von Parametern umgehen zu können, müssen Sie eine Laufzeichenfolge erstellen: -
str="cat filename" while [ $# -gt 0 ]; do a="$a|grep '$1'"; shift; done eval "$a"
Ich vermeide zwar generell unnötige cat
Aufrufe (Entschuldigung wegen des Wortspiels), aber die Verwendung in diesem Fall vereinfacht das Skript erheblich. Ich habe nicht alle Kombinationen mit eingebetteten Leerzeichen in den Parametern getestet, aber das obige Skript scheint das Zitieren in einfachen Fällen korrekt zu behandeln.