Как избежать & ldquo;. & Rdquo; с sed или grep?

PhotoRec может восстановить файлы.

1
задан 11 December 2015 в 13:07

3 ответа

\.* означает «любое количество вхождений символа .», включая ноль. Поскольку ваши подчеркнутые имена файлов начинаются с denm, за которым следуют нулевые вхождения символа ., они сопоставляются. grep "denm\." file будет работать.

7
ответ дан 23 May 2018 в 15:07

Если вам нужны строки, в которых есть ., они используют grep с фиксированными строками вместо регулярных выражений:

grep -F . file

Из man grep:

-F, --fixed-strings
      Interpret PATTERN as a  list  of  fixed  strings,  separated  by
      newlines,  any  of  which is to be matched.  (-F is specified by
      POSIX.)

С фиксированными строками все специальные символы специального выражения теряют смысл.

sed не имеет соответствующей опции.

3
ответ дан 23 May 2018 в 15:07

Я склонен использовать скобки вместо обратных косых черт для ускорения:

egrep "denm[.].*" file
sed -r 's/denm[.]/.../'

Это спасает меня от мысли, что и как я должен избегать обратных косых черт. (Здесь конечный .* избыточен.)

1
ответ дан 23 May 2018 в 15:07
  • 1
    обратите внимание, что некоторые могут неправильно понимать это как [+.], используемое для экранирования + и ., но то, что он делает, соответствует только одному символу, может ли это быть + или . – Avinash Raj 12 December 2015 в 15:25

Другие вопросы по тегам:

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