Поведение extglob, особенно при использовании *(patternList) в bash

Выглядит глупо, но поскольку этот вопрос помечен /sed, вот способ сделать это с помощью sed, как вы упомянули:)

alias date='date +"%Y.%m.%d.%H.%M.%S" | sed "s/^0*//g; s/\.0*/./g"'
0
16.10.2019, 00:13
2 ответа

Шаблон должен совпадать со всем именем, а не только с префиксом имени.

Ayне соответствует A*(xx), потому что он не состоит из A, за которым следует любое количество xx. yне соответствует шаблону. Ayсоответствует A*(xx)yи A*(xx)?и A*(xx)*.

Точно так же Axxxне совпадает с A*(xx), поскольку оно не состоит из A, за которым следует какое-либо количество xx. Axxxдействительно соответствует A*(x)(A, за которым следуют три раза x), A*(xx)x(A, затем один раз xx, затем x), A*(xx)?, A*(xx)*и т. д.

3
28.04.2021, 23:28

Doesn't Axxx also contain exactly one occurrence of xx?

Соответствует -, но также имеет дополнительный x, который не соответствует шаблону A*(xx). Например, это будет соответствовать A*(xx)?.

Furthermore, why is Ay not printed since it has 0 occurences of xx?

Опять же, потому что в шаблоне нет ничего, что соответствовало бы завершающему y.

Я предполагаю, что все сводится к тому, что глобусы являются совпадениями целой строки .

2
28.04.2021, 23:28

Теги

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