история пропущенных команд

Оператор регулярного выражения, который соответствует одному символу, — .. Это похоже на ?в подстановочных знаках оболочки. *соответствует любому числу предыдущих вещей в регулярных выражениях (, например, a*соответствует любому числу (, включая 0 )из as ), и любому количеству символов в оболочке подстановочные знаки.

POSIXly, чтобы найти строки, соответствующие e xдействующему на этом:

grep -xE 'ex.{4}e'

Или:

grep -x ex....e

или:

grep -x 'ex.\{4\}e'

Второй из которых является наиболее портативным. grep '^ex....e$'будет работать даже в исходной реализации Unix версии 4 (1973 ); однако -xбыл добавлен в Unix версии 7 (1979 )и в настоящее время является универсальным, поэтому вы можете положиться на него.

Расширенные регулярные выражения были добавлены в egrepв V7, но первоначально без интервальных операторов {x,y}. Этот оператор был добавлен как \{x,y\}для grep, но часто не в egrep, так как это нарушило бы обратную совместимость. Однако в начале девяностых POSIX представил опцию -Eдля grepдля слияния функциональности egrepс grepи требует, чтобы она поддерживала {x,y}, а egrepтеперь устарела.

Тем не менее, вы по-прежнему время от времени находите некоторые grepреализации, которые не поддерживают -Eили egrep, которые не поддерживают {x,y}, например /bin/grepи /bin/egrepSolaris (, где вам нужно использовать /usr/xpg4/bin/grepвместо ).

Имейте в виду, что некоторые grepреализации не поддерживают многобайтность, и их .оператор регулярного выражения может совпадать с каждым байтом многобайтового символа, например, не -ASCII UTF -8 символов ).

$ $ locale charmap
UTF-8
$ echo extrême | busybox grep -x ex....e 
$ echo extrême | gnu-grep -x ex....e
extrême
$ echo extrême | busybox grep -x ex.....e
extrême

Поскольку символ ê состоит из двух байтов в UTF -8, extrêmeсоставляет 7 символов, но 8 байтов:

$ printf %s extrême | wc -cm
      7       8
0
29.05.2020, 11:28
1 ответ

Некоторые оболочки просто записывают команду один раз, если вы повторяете ее несколько раз подряд.

0
28.04.2021, 23:23

Теги

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