Не могу найти мой ввод в строке, используя grep


11

У меня есть строка, разделенная запятыми, где я хочу найти свой ввод в этой строке:

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

Выход пуст! Как мне использовать grep, чтобы найти свой ввод в этой строке?

Ответы:


18

Поменяйте местами аргументы команд:

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

В:

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

Вы ищете строку (образец) US,CA,CH,JPво входной строке US, которая не соответствует ожидаемому.


14

Если вы не ожидали, что запятые будут действовать как оператор "или", в этом случае вам просто нужно заменить запятые на каналы и использовать -Eопцию для расширенных регулярных выражений:

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

Или измените запятые на символы новой строки:

echo US | grep "US
CA
CH
JP"

-1

я хотел бы использовать $echo US | grep -i "US|CA|JP|CH"

Вместо эко дайте ему список или что-то, куда он может пойти и искать шаблоны, вместо того, чтобы искать их в «США»


Вы забыли -E.
reinierpost
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.