Искал решение для SO, Ask и Unix / Linux, но я проиграл, пытаясь понять, как написать условное выражение с диапазоном grep:
Пройти:
1-20_something
100-200_something
2-100_something
11-333_something
работает, но только на 1-9_something:
if grep -q '[0-9]-[0-9]_something' "$foobar"; then
echo "Additional Code"
fi
не работает:
if grep -q '\d{1,3}-\d{1,3}_something' "$foobar"; then
echo "Additional Code"
fi
, и это не работает:
if grep -q '[0-9]{1,3}-[0-9]{1,3}_something' "$foobar"; then
echo "Additional Code"
fi
Каков наилучший путь для диапазона через {1,3}?
Чтобы помочь следующему человеку, который может пройти через это, я много искал и после ответы, которые я дал:
Grep для диапазона чисел Как сопоставить определенный диапазон чисел с регулярным выражением, используя только grep Соответствие последовательности чисел в grepВаша вторая попытка должна работать, если вы включили PCRE (совместимые с Perl регулярные выражения) с помощью -P:
grep -Pq '\d{1,3}-\d{1,3}_something'
\d не находится в BRE или ERE или в списке дополнительной обратной косой черты выражения, которые GNU Grep имеет, но это вещь Perl.
Ваша третья попытка должна работать, если вы активировали дополнительные выражения обратной косой черты :
grep -Eq '[0-9]{1,3}-[0-9]{1,3}_something'
[ f5] не является конструкцией BRE (основное регулярное выражение).