странное сопоставление регулярных выражений с grep/egrep

Может ли быть так, что в вашем контексте выполнения geditне разрешается как исполняемая программа gedit, а как сценарий оболочки, функция или псевдоним, который выполняет gedit в фоновом режиме ? В противном случае я не вижу причин, по которым источник не должен выполняться.

Собственно, &&я бы не использовал, как предложил полвоазул. Это решение приведет к тому, что.bashrc будет получен только в том случае, если gedit вернется с нулевым кодом выхода. Хотя мы, безусловно, должны надеяться, что программа с хорошим -поведением должна завершаться с 0, если все прошло хорошо, я видел достаточно программ, которые не заботятся о кодах выхода, а справочная страница gedit ничего не говорит о коде выхода., что технически означает, что код выхода не указан. Я бы не хотел, чтобы мои функции зависели от этого...

1
30.08.2019, 05:09
2 ответа

Бах... больше возиться, и кажется, что символ перед подстановочным знаком *рассматривается как .

Правильное использование подстановочных знаков для grep, по-видимому, .*не только*

Кроме того, \b не требовалось, когда я использовал .*в качестве подстановочного знака. Флаг -w работает как положено:

echo "somestringthing" | egrep -w 'somestring.*'
somestringthing

echo "somestringthing" | egrep -w 'somestringy.*'
(no output as expected)
0
27.01.2020, 23:30

y*, 1*и X*в конце последних трех регулярных выражений будут соответствовать нулю или более y, 1и Xсоответственно.

В конце входной строки somestringthingу вас действительно есть ноль или более этих символов(ровно ноль ), так что все три выражения совпадают.

Если вы хотите сопоставить один или несколько yв конце строки, используйте y+или y{1,}в расширенном регулярном выражении или yy*или y\{1,\}в базовое регулярное выражение(grepбез-E):

echo somestringthing | grep -E 'somestringthingy+'

(это не производит вывода)

Также обратите внимание, что egrepустарел, и вы должны использовать grep -E. Если вы хотите сопоставить только полные слова, используйте grep -E -w(, для этого потребуется граница слова в начале и конце совпадения во входных данных ).

2
27.01.2020, 23:30

Теги

Похожие вопросы