Ich kann meine Eingabe in der Zeichenfolge mit grep nicht finden

11

Ich habe eine durch Kommas getrennte Zeichenfolge, in der ich meine Eingabe in dieser Zeile finden möchte:

echo US | grep "US,CA,CH,JP"

Die Ausgabe ist leer! Wie soll ich grep verwenden, um meine Eingabe in dieser Zeichenfolge zu finden?

user3544092
quelle

Antworten:

18

Tauschen Sie die Argumente der Befehle aus:

echo "US,CA,CH,JP" | grep US

Im:

echo US | grep "US,CA,CH,JP"

Sie suchen nach der Zeichenfolge (Muster) US,CA,CH,JPin der Eingabezeichenfolge US, die nicht erwartungsgemäß übereinstimmt.

heemayl
quelle
14

Sofern Sie nicht erwartet haben, dass die Kommas wie eine "oder" -Anweisung wirken, müssen Sie in diesem Fall nur die Kommas in Pipes ändern und die -EOption für erweiterte reguläre Ausdrücke verwenden:

echo US | grep -E "US|CA|CH|JP"

Oder ändern Sie die Kommas in Zeilenumbrüche:

echo US | grep "US
CA
CH
JP"
Jeff Schaller
quelle
-1

ich würde ... benutzen $echo US | grep -i "US|CA|JP|CH"

Anstelle von Öko geben Sie ihm eine Liste oder etwas, wo es tatsächlich nach Mustern suchen kann, anstatt sie in "USA" zu suchen.

dmb
quelle
Du hast es vergessen -E.
Reinierpost