grep the adb logcat & write the output to a text file
Edit: This seems to work
./adb logcat |grep --line-buffered ABC >a.txt
I can explain you what is happening heres. Hope someone can derive a solution from that.If you run the following command in terminal
cat |grep "ABC"
and start entering lines of text, you can see that grep immediately outputs any lines that contains.
cat somefile.txt | grep "ABC"
will print all lines that contains 'ABC' to the terminal, as expected.
But if you run
cat |grep ABC >a.txt
and start entering text on the terminal, you can see that the file is not written until you enter an EOF character (Ctrl+ D) and make cat terminate.
But using --line-buffered gives output in the expected way
cat |grep --line-buffered ABC >a.txt
adb logcat | grep ABC | tee out
This is working for me:
./adb logcat | grep ABC | dd of=/home/levex/dump.txt
./adb logcat opens the logcat, and then it goes through a pipe to
grep ABC which filters the lines to those containing
ABC, and then again through a pipe to
dd of=/home/levex/dump.txt to finally print it to a file.
of=xxx parameter sets the output file.
I think there is a problem with grep buffering. You can try something like this:
./adb logcat | grep --line-buffered ABC > std.txt
It should be the same problem for chained grep.
EDIT: A similar question can be found here: Why no output is shown when using grep twice?.