каре grep, кажется, не имеет никакого эффекта

Я написал некоторый код Python, который делает это. Можно найти его в моем проекте с открытым исходным кодом.

http://code.google.com/p/pycopia/source/browse/trunk/core/pycopia/OS/Linux/event.py

При выполнении того модуля как сценария как корень, Вы видите демонстрацию в действии.

Эта основная функциональность была расширена для другого проекта, powerdroid, который обеспечивает более конкретную реализацию для встроенной системы (Android).

http://code.google.com/p/powerdroid/source/browse/trunk/src/droid/devices.py

7
21.11.2017, 10:24
2 ответа

Для нахождения пространства необходимо использовать [:space:] в другой паре скобок, которые будут похожи [[:space:]]. Вы, вероятно, означали выражать grep -E '^[[:space:]]*h'

Для объяснения, почему текущий перестал работать:

В настоящий момент [:space:]*h включает класс символов, ища любой из символов: :, s, p, a, c, и e которые происходят любое количество раз (включая 0), сопровождаемый h. Это соответствует Вашей строке очень хорошо, но если Вы работаете grep -o, Вы найдете, что только соответствовали h, не пространство.

Если Вы добавляете карат к началу, или одна из тех букв или h должен быть в начале строки для соответствия, но ни один не, таким образом, она не соответствует.

7
27.01.2020, 20:16

Похож на него, принимает это [:space:] только появится в рамках выражения скобки (выделенные соответствия с *):

echo 'hello' | grep -E '^[:space:]*h'
*h*ello
echo 'hello' | grep -E '[^[:space:]]*h'
*h*ello
echo ' hello' | grep -E '^[[:space:]]*h'
* h*ello

Это объяснено следующим отрывком от man grep (мое выделение):

Наконец, определенные именованные классы символов предопределены в рамках выражений скобки [...] Примечание, что скобки в этих именах классов являются частью символьных имен и должны быть включены в дополнение к скобкам, разграничивающим выражение скобки.

4
27.01.2020, 20:16
  • 1
    Да. Я думаю, что это корректно. Я только что заметил человека" (Обратите внимание, что скобки в этих [предопределенных] именах классов являются частью символьных имен и должны быть включены в дополнение к скобкам, разграничивающим выражение скобки.)" –  JW01 28.10.2011, 14:05

Теги

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