Compartilhamento de tecnologia

adb shell logcat -b all|grep Como posso fazer grep em duas substrings?

2024-07-06

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

existiradb shell logcatCombinado no comandogrepAo filtrar logs, se quiser combinar duas substrings ao mesmo tempo, você pode usar um canal (|) serão doisgrepcomando para concatenar ou usargrepde-E(ouegrep, o que equivale a-E) para oferecer suporte a expressões regulares estendidas, para que você possa usar OR lógico (|) para corresponder a vários padrões.

Método 1: use doisgrepOrdem

Neste método, o primeirogrepO comando filtra as linhas que contêm a primeira substring e depois a segundagrepO comando então filtra as linhas que contêm a segunda substring dessas linhas.

 

bash复制代码

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

Método 2: usargrepde-EOpções

Essa abordagem é mais concisa porque permite usar umgrepVários modos são especificados no comando ao mesmo tempo.

 

bash复制代码

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

Observe, entretanto, que o comando acima irá, na verdade, corresponder às linhas que contêm "substring 1" ou "substring 2", e não ambas. Se você quiser combinar duas substrings ao mesmo tempo, você deve escrever:

 

bash复制代码

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

Ou usegrepde-z(Nota: Este não é um padrãogrepparte, mas algumas versões degrepouzgrepsuporte) ouawkAguarde que outras ferramentas lidem com a correspondência multilinha (isso geralmente é mais complexo e não é necessário para cenários simples).

No entanto, se você realmente precisa combinar duas substrings em uma expressão regular (e as duas substrings podem aparecer em qualquer lugar na mesma linha), você pode usar o análogo do AND lógico (embora na verdade você use OR lógico|, mas garantindo que ambas as substrings apareçam no padrão):

 

bash复制代码

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

Este comando corresponderá à situação em que "substring 1" aparece primeiro e depois "substring 2" aparece na mesma linha, ou "substring 2" aparece primeiro e depois "substring 1". Observe que esse padrão não exige estritamente que as duas substrings sejam imediatamente adjacentes uma à outra; pode haver qualquer número de caracteres entre elas;Se precisar deles um ao lado do outro, você pode remover o do meio.*