grep the ADB logcat & write the output to a text file

Chcę grep logcat adb i zapisać wyjście do pliku tekstowego. If I just do

./adb logcat > std.txt

Zapisuje cały dziennik do pliku tekstowego i jeśli to zrobię

./adb logcat | grep ABC
Wyświetla wszystkie linie zawierające ABC do mojego terminala. Ale teraz chcę wyszukać ABC i zapisać tylko te linie do pliku tekstowego.
./adb logcat | grep ABC > std.txt
Nie działa. Plz pomocy.
Author: AndroidGuy, 2013-02-05

7 answers

Myślę, że jest problem z buforowaniem grepa. Możesz spróbować czegoś takiego:

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

To powinien być ten sam problem dla przykutego grepa.

EDIT: podobne pytanie można znaleźć tutaj: Dlaczego nie jest wyświetlane wyjście, gdy używa się grepa dwa razy?.

 44
Author: Brtle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:00:27

To działa dla mnie:

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

Wyjaśnienie: ./adb logcat otwiera logcat, a następnie przechodzi przez rurę do grep ABC, która filtruje linie do tych zawierających ABC, a następnie ponownie przez rurę do dd of=/home/levex/dump.txt, aby w końcu wydrukować go do pliku. of=xxx parametr ustawia plik wyjściowy.

 4
Author: Levente Kurusa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-15 13:58:46

Edytuj: To chyba działa

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

Mogę ci wyjaśnić, co się dzieje heres. Mam nadzieję, że ktoś wyciągnie z tego jakieś rozwiązanie.Jeśli uruchomisz następujące polecenie w terminalu

cat |grep "ABC"

I zacznij wpisywać wiersze tekstu, widać, że grep natychmiast wyświetla wszystkie wiersze, które zawierają.

 cat somefile.txt | grep "ABC" 

Wyświetli wszystkie linie zawierające " ABC " do terminala, zgodnie z oczekiwaniami.

But if you run

cat |grep ABC >a.txt

I zacznij wpisywać tekst na terminalu, możesz zobaczyć że plik nie zostanie zapisany, dopóki nie wpiszesz znaku EOF (Ctrl+ D) i nie zakończysz programu cat.

Ale użycie --line-bufored daje wyjście w oczekiwany sposób

cat |grep --line-buffered  ABC >a.txt
 3
Author: Vishnuprasad R,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-09 13:34:53

Spróbuj tego

./adb logcat -s "ABC" > std.txt
 1
Author: UdayaLakmal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-05 06:58:34

Coś takiego może Szukam wszystkich wpisów ze słowem czas, testapk1 i testapk2

adb logcat -v time testapk1 testapk2 *:S -d > adblogfilter.log 
 1
Author: Thomas J Younsi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-04 19:33:13

Try adb logcat | grep ABC | tee out

 1
Author: pierrotlefou,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-16 08:58:16

Zapisz LogCat Do Pliku Tekstowego

" aby zapisać LogCat do pliku tekstowego Otwórz okno terminala i wpisz: adb logcat - d > logcat.txt "

 0
Author: Adnama,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-11 19:57:41