38

I want to grep the adb logcat & write the output to a text file. If I just do

./adb logcat > std.txt

it writes the entire log to the text file & If I do

./adb logcat | grep ABC

it prints all lines containing ABC to my terminal. But now I wish to search for ABC & write only these lines to a text file.

./adb logcat | grep ABC > std.txt

doesn't work. Plz help.

4

8 回答 8

56

我认为 grep 缓冲存在问题。你可以尝试这样的事情:

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

链式 grep 应该是同样的问题。

编辑:可以在这里找到一个类似的问题:为什么使用 grep 两次时没有显示输出?.

于 2013-08-09T12:06:55.757 回答
4

编辑:这似乎有效

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

我可以向你解释这里发生了什么。希望有人可以从中得出解决方案。如果您在终端中运行以下命令

cat |grep "ABC"

并开始输入文本行,您可以看到 grep 立即输出包含的任何行。

 cat somefile.txt | grep "ABC" 

将按预期将所有包含“ABC”的行打印到终端。

但是如果你跑

cat |grep ABC >a.txt

并开始在终端上输入文本,您可以看到在您输入 EOF 字符 (Ctrl+D) 并使 cat 终止之前,该文件不会被写入。

但是使用 --line-buffered 会以预期的方式提供输出

cat |grep --line-buffered  ABC >a.txt
于 2013-08-09T13:34:53.450 回答
4

这对我有用:

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

说明: ./adb logcat打开 logcat,然后它通过一个管道将grep ABC行过滤到包含 的行ABC,然后再次通过管道将dd of=/home/levex/dump.txt其打印到文件中。 of=xxx参数设置输出文件。

于 2013-08-15T13:53:01.620 回答
3

尝试adb logcat | grep ABC | tee out

于 2013-08-16T08:58:16.370 回答
1

类似的东西可能会寻找所有带有单词时间、testapk1 和 testapk2 的条目

adb logcat -v time testapk1 testapk2 *:S -d > adblogfilter.log 
于 2013-06-04T19:33:13.617 回答
1

尝试这个

./adb logcat -s "ABC" > std.txt
于 2013-02-05T06:58:14.963 回答
1

将 LogCat 保存到文本文件

“要将 LogCat 保存到文本文件,请打开终端窗口并输入:adb logcat -d > logcat.txt”

于 2013-08-12T14:24:50.340 回答
0

尝试这个

adb logcat -d -e "ABC" > std.txt
于 2020-12-26T02:07:13.810 回答