Обмен технологиями

оболочка adb logcat -b all|grep Как я могу выполнить grep две подстроки?

2024-07-06

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

существоватьadb shell logcatОбъединенный в командуgrepЕсли при фильтрации журналов вы хотите сопоставить две подстроки одновременно, вы можете использовать канал (|) будет дваgrepкоманда для объединения или использованияgrepиз-E(илиegrep, что эквивалентно-E) для поддержки расширенных регулярных выражений, поэтому вы можете использовать логическое ИЛИ (|), чтобы соответствовать нескольким шаблонам.

Способ 1: используйте дваgrepЗаказ

В этом методе первыйgrepкоманда отфильтровывает строки, содержащие первую подстроку, затем вторуюgrepЗатем команда отфильтровывает из этих строк строки, содержащие вторую подстроку.

 

bash复制代码

adb shell logcat -b all | grep '子串1' | grep '子串2'

Метод 2: Используйтеgrepиз-EПараметры

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

 

bash复制代码

adb shell logcat -b all | grep -E '子串1|子串2'

Однако обратите внимание, что приведенная выше команда на самом деле будет соответствовать строкам, содержащим «подстроку 1» или «подстроку 2», а не обе. Если вы хотите сопоставить две подстроки одновременно, вам следует написать:

 

bash复制代码

adb shell logcat -b all | grep '子串1' | grep '子串2'

Или используйтеgrepиз-z(Примечание: это не стандартgrepчасть, но некоторые версииgrepилиzgrepподдержка) илиawkПодождите, пока другие инструменты обработают многострочное сопоставление (обычно это более сложно и необязательно для простых сценариев).

Однако, если вам действительно нужно сопоставить две подстроки в регулярном выражении (а две подстроки могут появляться где угодно в одной строке), вы можете использовать аналог логического И (хотя на самом деле вы используете логическое ИЛИ).|, но гарантируя, что обе подстроки присутствуют в шаблоне):

 

bash复制代码

adb shell logcat -b all | grep -E '子串1.*子串2|子串2.*子串1'

Эта команда будет соответствовать ситуации, когда сначала появляется «подстрока 1», а затем в той же строке появляется «подстрока 2», или сначала появляется «подстрока 2», а затем появляется «подстрока 1». Обратите внимание, что этот шаблон не требует, чтобы две подстроки находились непосредственно рядом друг с другом, между ними может быть любое количество символов;Если они вам нужны рядом друг с другом, вы можете удалить средний..*