Почему команды

fdisk -l | grep sd? 
fdisk -l | grep sd?? 

не работать в этой ситуации и

fdisk -l | grep sd[ab] 

работает ?

окно терминала

2 ответа2

1

Не все регулярные выражения в grep совпадают с shell . Для распечатки диска с ?, используйте следующее

fdisk -l | grep 'sd?*'

Фактически, вышесказанное может быть достигнуто с помощью следующей упрощенной версии:

fdisk -l | grep sd
0

Вы, вероятно, хотели использовать egrep:

fdisk -l | grep sd..?

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

fdisk -l | grep 'sd.\|sd..'

Объяснение:

egrep эквивалентен grep -E и использует другую улучшенную версию регулярных выражений.

. означает любой персонаж

\| означает или

Смотри man grep:

-E, --extended-regexp
       Interpret PATTERN as an extended regular  expression  (ERE,  see below).

   grep understands three different versions of regular expression syntax:
   “basic”  (BRE), “extended” (ERE) and “perl” (PCRE).  In GNU grep, there
   is no difference in available functionality between basic and  extended
   syntaxes.  In other implementations, basic regular expressions are less
   powerful.   The  following  description  applies  to  extended  regular
   expressions;  differences  for basic regular expressions are summarized
   afterwards.   Perl-compatible  regular  expressions   give   additional
   functionality,  and are documented in pcresyntax(3) and pcrepattern(3),
   but work only if PCRE is available in the system.

   The period . matches any single character.

Alternation
   Two regular expressions may be joined by the infix operator |; the resulting regular expression matches any string matching either alternate expression.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .