Impossible de trouver mon entrée dans la chaîne à l'aide de grep


11

J'ai une chaîne séparée par des virgules où je veux trouver mon entrée dans cette ligne:

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

La sortie est vide! Comment dois-je utiliser grep pour trouver mon entrée dans cette chaîne?

Réponses:


18

Échangez les arguments des commandes:

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

Dans:

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

vous recherchez la chaîne (modèle) US,CA,CH,JPdans la chaîne d'entrée US, qui ne correspond pas comme prévu.


14

Sauf si vous vous attendiez à ce que les virgules agissent comme une instruction "ou", auquel cas il vous suffit de modifier les virgules en canaux et d'utiliser l' -Eoption pour les expressions régulières étendues :

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

Ou changez les virgules en caractères de nouvelle ligne:

echo US | grep "US
CA
CH
JP"

-1

j'utiliserais $echo US | grep -i "US|CA|JP|CH"

Au lieu de eco, donnez-lui une liste ou quelque chose, où il peut réellement aller chercher des modèles, au lieu de les chercher aux "États-Unis"


Tu as oublié -E.
reinierpost
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.