Technologieaustausch

adb shell logcat -b all|grep Wie kann ich zwei Teilzeichenfolgen grepen?

2024-07-06

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

existierenadb shell logcatKombiniert im KommandogrepWenn Sie beim Filtern von Protokollen zwei Teilzeichenfolgen gleichzeitig abgleichen möchten, können Sie eine Pipe (|) werden zweigrepBefehl zum Verketten oder Verwendengrepvon-E(oderegrep, was äquivalent ist zu-E)-Option zur Unterstützung erweiterter regulärer Ausdrücke, sodass Sie logisches ODER (|), um mehrere Muster abzugleichen.

Methode 1: Verwenden Sie zweigrepBefehl

Bei dieser Methode ist die erstegrepDer Befehl filtert Zeilen heraus, die den ersten Teilstring und dann den zweiten enthaltengrepAus diesen Zeilen filtert der Befehl dann die Zeilen heraus, die den zweiten Teilstring enthalten.

 

bash复制代码

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

Methode 2: Verwendunggrepvon-EOptionen

Dieser Ansatz ist prägnanter, da er die Verwendung von a ermöglichtgrepIm Befehl werden mehrere Modi gleichzeitig angegeben.

 

bash复制代码

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

Beachten Sie jedoch, dass der obige Befehl tatsächlich Zeilen findet, die „Teilzeichenfolge 1“ oder „Teilzeichenfolge 2“ enthalten, nicht beides. Wenn Sie zwei Teilzeichenfolgen gleichzeitig abgleichen möchten, sollten Sie Folgendes schreiben:

 

bash复制代码

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

Oder verwendengrepvon-z(Hinweis: Dies ist kein StandardgrepTeil, aber einige Versionen vongrepoderzgrepUnterstützung) bzwawkWarten Sie, bis andere Tools den mehrzeiligen Abgleich übernehmen (dies ist normalerweise komplexer und für einfache Szenarien nicht erforderlich).

Wenn Sie jedoch wirklich zwei Teilzeichenfolgen in einem regulären Ausdruck abgleichen müssen (und die beiden Teilzeichenfolgen an beliebiger Stelle in derselben Zeile erscheinen können), können Sie das Analogon des logischen UND verwenden (obwohl Sie tatsächlich das logische ODER verwenden).|, aber indem sichergestellt wird, dass beide Teilzeichenfolgen im Muster erscheinen):

 

bash复制代码

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

Dieser Befehl entspricht der Situation, in der „Teilzeichenfolge 1“ zuerst erscheint und dann „Teilzeichenfolge 2“ in derselben Zeile erscheint, oder wenn „Teilzeichenfolge 2“ zuerst erscheint und dann „Teilzeichenfolge 1“ erscheint. Beachten Sie, dass dieses Muster nicht unbedingt erfordert, dass die beiden Teilzeichenfolgen unmittelbar nebeneinander liegen. Zwischen ihnen kann eine beliebige Anzahl von Zeichen liegen.Wenn Sie sie direkt nebeneinander benötigen, können Sie das mittlere entfernen.*