Condivisione della tecnologia

adb shell logcat -b all|grep Come posso grep due sottostringhe?

2024-07-06

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

esistereadb shell logcatCombinati al comandogrepQuando si filtrano i log, se si desidera far corrispondere due sottostringhe contemporaneamente, è possibile utilizzare una pipe (|) saranno duegrepcomando da concatenare o utilizzaregrepDi-E(Oegrep, che equivale a-E) per supportare le espressioni regolari estese, quindi puoi utilizzare l'OR logico (|) per abbinare più modelli.

Metodo 1: usane duegrepOrdine

In questo metodo, il primogrepIl comando filtra le righe contenenti la prima sottostringa, quindi la secondagrepIl comando quindi filtra da queste righe le righe contenenti la seconda sottostringa.

 

bash复制代码

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

Metodo 2: utilizzaregrepDi-EOpzioni

Questo approccio è più conciso perché consente di utilizzare agrepNel comando vengono specificate più modalità contemporaneamente.

 

bash复制代码

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

Tieni presente, tuttavia, che il comando precedente corrisponderà effettivamente alle righe che contengono "sottostringa 1" o "sottostringa 2", non entrambe. Se vuoi abbinare due sottostringhe contemporaneamente, dovresti scrivere:

 

bash复制代码

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

Oppure utilizzaregrepDi-z(Nota: questo non è uno standardgrepparte, ma alcune versioni digrepOzgrepsupporto) oawkAttendi che altri strumenti gestiscano la corrispondenza su più righe (di solito è più complessa e non necessaria per scenari semplici).

Tuttavia, se hai davvero bisogno di far corrispondere due sottostringhe in un'espressione regolare (e le due sottostringhe possono apparire ovunque sulla stessa riga), puoi usare l'analogo dell'AND logico (anche se in realtà usi l'OR logico|, ma assicurandosi che entrambe le sottostringhe appaiano nel pattern):

 

bash复制代码

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

Questo comando corrisponderà alla situazione in cui appare prima la "sottostringa 1" e poi la "sottostringa 2" nella stessa riga, oppure appare prima la "sottostringa 2" e poi la "sottostringa 1". Si noti che questo modello non richiede strettamente che le due sottostringhe debbano essere immediatamente adiacenti l'una all'altra; tra di esse può esserci un numero qualsiasi di caratteri.Se ne hai bisogno uno accanto all'altro puoi rimuovere quello centrale.*