Почему мое grep + regex не работает?

У DockbarX есть некоторые ошибки, когда дело доходит до dualscreen, так как у меня нет никаких изменений, чтобы сам проверить код и приходится полагаться на отчеты об ошибках от других. Раньше я слышал об этой проблеме (с dockbarx в обычной панели, а не на полу), но я не нашел решения.

1
задан 18 January 2014 в 03:19

2 ответа

Вы должны процитировать свое выражение, чтобы оболочка не интерпретировала его. grep не имеет escape-кода \d, вам нужно будет использовать [0-9]. + необходимо экранировать без переключателя -E.

Это должно работать:

watch cat /proc/mdstat | grep 'finish=[0-9]\+\.[0-9]' | grep '[0-9]\+\.[0-9]'
3
ответ дан 24 May 2018 в 12:52
  • 1
    Я принял ответ Кенна, потому что переключатель -P позволит мне использовать регулярные выражения таким образом, что мне уже вполне комфортно. Тем не менее, я все еще поддерживаю ваш ответ, потому что это хорошее решение. Я буду помнить об этом! Благодаря! – blz 18 January 2014 в 16:31
  • 2
    @blz Grep поддерживает 3 'стили' регулярных выражений: " basic " -G (по умолчанию), "расширенный" -E и "perl" -П. Основной режим требует, чтобы ?, +, {, |, (, and ) был экранирован, чтобы иметь особое значение. – kiri 19 January 2014 в 02:36

Вместо этого используйте sed, это сработало для меня:

watch "cat /proc/mdstat | grep 'finish\=' | sed -e 's/.*finish\=\([0-9,\.]*\).*/\1/g'"
0
ответ дан 24 May 2018 в 12:52
  • 1
    OP хочет ", чтобы научиться свободно использовать grep. & Quot; – Radu Rădeanu 18 January 2014 в 03:56
  • 2
    @chaos, Не знаю о sed. Я мысленно замечаю это =) – blz 18 January 2014 в 16:30

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

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