В Android logcat есть возможность указать фильтр регулярных выражений:
-e, --regex=<expr> Only print lines where the log message matches <expr> where <expr> is
an ECMAScript regular expression.
Это работает нормально с регулярным выражением следующим образом:
adb logcat -e ".*cam.*"
однако, если я изменю его, чтобы сделать его нечувствительным к регистру, он вообще перестанет работать:
adb logcat -e "(?i).*cam.*"
Единственный обходной путь:
adb logcat -e ".*[cC][aA][mM].*"
Но это нежелательно, так как написание занимает так много времени, я хочу создать bat-файл, который будет принимать пользовательский ввод, а затем автоматически запускать фильтр в logcat, с последним синтаксисом его почти невозможно запрограммировать.
Есть ли другой способ указать нечувствительность к регистру в регулярном выражении?
В Android нет grep
, поэтому нельзя использовать этот подход.
@tripleee Когда я запускаю logcat --help
, он печатает сообщение выше -e, --regex=<expr> Only print lines where the log message matches <expr> where <expr> is an ECMAScript regular expression.
так что да, оно поддерживается и работает, за исключением части без учета регистра
Как прямо сказано, поддерживаемым диалектом является ECMAScript.
Возможный дубликат stackoverflow.com/questions/3939715/…
(Если это не сразу очевидно, регулярное выражение ECMAScript не поддерживает (?i)
или многие другие расширения регулярных выражений Perl/PCRE.)
Да, в Android нет grep
опции для фильтрации игнорирования регистра.
Но есть способ сделать это.
Это не точное решение. Но это альтернатива фильтрации журнала adb с регистронезависимой конфигурацией.
Если мы используем Git Bash в системе Windows, мы можем использовать опцию grep
.
Я попробовал этот способ в своей системе, и он работает отлично.
./adb.exe logcat | grep ".*[cC][aA][mM].*"
or
./adb.exe logcat | grep -i ".*cam.*"
Хорошо, спасибо, но использовать консоль git немного раздражает, возможно, я просто нашел другую реализацию grep для консоли Windows. также ./adb.exe logcat | grep -i "cam"
тоже работает.
Я не любитель Android, но я не могу найти никакой документации о
--regex
, не говоря уже о том, поддерживает ли он расширения Perl, такие как(?i)
. Есть ли у вас основания полагать, что так и должно быть?