web-dev-qa-db-fra.com

grep le logcat adb et écrire la sortie dans un fichier texte

Je veux grep le logcat adb et écrire la sortie dans un fichier texte. Si je fais juste

./adb logcat > std.txt

il écrit tout le journal dans le fichier texte et si je le fais

./adb logcat | grep ABC

il imprime toutes les lignes contenant ABC sur mon terminal. Mais maintenant, je souhaite rechercher ABC et écrire uniquement ces lignes dans un fichier texte.

./adb logcat | grep ABC > std.txt

ne fonctionne pas. Aide Plz.

31
AndroidGuy

Je pense qu'il y a un problème avec la mise en mémoire tampon grep. Vous pouvez essayer quelque chose comme ceci:

./adb logcat | grep --line-buffered ABC > std.txt

Ce devrait être le même problème pour le grep chaîné.

EDIT: Une question similaire peut être trouvée ici: Pourquoi aucune sortie n'est affichée lors de l'utilisation de grep deux fois? .

51
Brtle

Cela fonctionne pour moi:

./adb logcat | grep ABC | dd of=/home/levex/dump.txt

Explication:./adb logcat ouvre le logcat, puis il passe par un tube vers grep ABC qui filtre les lignes vers celles contenant ABC, puis à nouveau via un canal vers dd of=/home/levex/dump.txt pour enfin l'imprimer dans un fichier. of=xxx paramètre définit le fichier de sortie.

4
Levente Kurusa

Edit: Cela semble fonctionner

 ./adb logcat |grep --line-buffered  ABC >a.txt

Je peux vous expliquer ce qui se passe ici. J'espère que quelqu'un pourra en tirer une solution.Si vous exécutez la commande suivante dans le terminal

cat |grep "ABC"

et commencez à entrer des lignes de texte, vous pouvez voir que grep sort immédiatement toutes les lignes qui contiennent.

 cat somefile.txt | grep "ABC" 

imprimera toutes les lignes contenant "ABC" sur le terminal, comme prévu.

Mais si tu cours

cat |grep ABC >a.txt

et commencez à saisir du texte sur le terminal, vous pouvez voir que le fichier n’est pas écrit tant que vous n’avez pas saisi un caractère EOF (Ctrl + D) et que cat se termine.

Mais l'utilisation de --line-buffered donne la sortie de la manière attendue

cat |grep --line-buffered  ABC >a.txt
3
Vishnuprasad R

Essaye ça

./adb logcat -s "ABC" > std.txt
1
UdayaLakmal

Quelque chose comme ça peut-être à la recherche de toutes les entrées avec Word time, testapk1 et testapk2

adb logcat -v time testapk1 testapk2 *:S -d > adblogfilter.log 
1
Thomas J Younsi

Essayez adb logcat | grep ABC | tee out

1
pierrotlefou

Enregistrer LogCat dans un fichier texte

"Pour enregistrer LogCat dans un fichier texte, ouvrez une fenêtre de terminal et tapez: adb logcat -d> logcat.txt"

1
Adnama