соответствие шаблону grep

Следующий оператор всегда возвращает 1, когда я ожидаю, что он вернет 0:

echo "ACI123456777-001-20170701.pdf" | grep -e "^ACI([0-9]{9})-([0-9]{3})-([0-9]{8}).pdf$" 

  • Как активировать Virtualenv при запуске скрипта Python?
  • Как автоматически сканировать документы на Linux с терминала?
  • Вывод в переменной не должен интерпретироваться как команда
  • Выйти из bash, когда find попадает в папку с разрешенным разрешением
  • Переменные за пределами цикла while
  • Справка по сценарию awk / sed shell
  • if then else
  • dirname и basename против расширения параметров
  • 2 Solutions collect form web for “соответствие шаблону grep”

    Вы наблюдали выход кода 1, например:

     $ echo "ACI123456777-001-20170701.pdf" | grep -e "^ACI([0-9]{9})-([0-9]{3})-([0-9]{8}).pdf$"; echo code=$? code=1 

    Чтобы он работал так, как вы ожидаете, вам нужна опция -E`:

     $ echo "ACI123456777-001-20170701.pdf" | grep -Ee "^ACI([0-9]{9})-([0-9]{3})-([0-9]{8}).pdf$"; echo code=$? ACI123456777-001-20170701.pdf code=0 

    -E включает расширенные функции регулярных выражений.

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

     $ echo "ACI123456777-001-20170701.pdf" | grep -e "^ACI\([0-9]\{9\}\)-\([0-9]\{3\}\)-\([0-9]\{8\}\).pdf$"; echo code=$? ACI123456777-001-20170701.pdf code=0 

    Значение -e

    Параметр -e grep предшествует шаблону регулярного выражения:

     $ echo "ACI123456777-001-20170701.pdf" | grep -e '^ACI' ACI123456777-001-20170701.pdf 

    Если есть только один шаблон, то grep не нужен -e и вы можете его опустить:

     $ echo "ACI123456777-001-20170701.pdf" | grep '^ACI' ACI123456777-001-20170701.pdf 

    Однако, если есть два или более шаблонов, необходимо -e :

     $ echo "ACI123456777-001-20170701.pdf" | grep -e '^ACI' -e 'pdf' ACI123456777-001-20170701.pdf 
     echo "ACI123456777-001-20170701.pdf" | grep -q "ACI[0-9]\{9\}-[0-9]\{3\}-[0-9]\{8\}.pdf" echo $? 
    Linux и Unix - лучшая ОС в мире.