Я пытаюсь использовать следующее регулярное выражение в grep (ищет смешанные файлы PNG ).

[A-Z]+[\w.]*\.[pPnNgG]{3}[\\"')]*.*$

Когда я ввожу команду, моя оболочка отображает > ищет дополнительные данные.

Я могу использовать grep для некоторых базовых регулярных выражений, но я так и не понял, как использовать его с более сложными регулярными выражениями.

FWIW, это в Cygwin на Windows 7.

1 ответ1

2

Вы не избежали " персонажа". Двойная обратная косая черта перед будет заменена одинарной обратной косой чертой и " оставлена без экранирования. Либо удалите одну обратную косую черту, либо добавьте одну.

Попробуйте это регулярное выражение:

grep -i '^[0-9a-z _]\+\.png\([^0-9a-z]+\|$\)' file | grep -v '^[0-9A-Za-z _]\+\.\(png\|PNG\)\([^0-9A-Za-z]\|$\)'

Он будет соответствовать всем строкам, содержащимся в начале строки:

  • как минимум один из символов 0-9 (диапазон 0 , 1 , ..., 9 символов), a-z ' ' (пробел), '_'
  • точка (необходимо экранировать обратной косой чертой, иначе это будет означать «любой отдельный символ»)
  • 'png' (или 'Png' и т. д., потому что -i добавлен)
  • и за ним не следует ни один из символов 0-9 и a-z (или A-Z поскольку добавляется -i ).

-i - отключит чувствительность к регистру

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