grep adb logcat&将输出写入文本文件

时间:2013-02-05 06:50:50

标签: android file text grep logcat

我想要点击adb logcat&将输出写入文本文件。 如果我只是做

./adb logcat > std.txt

它将整个日志写入文本文件&如果我做

./adb logcat | grep ABC

它将包含ABC的所有行打印到我的终端。但现在我想搜索ABC&只将这些行写入文本文件。

./adb logcat | grep ABC > std.txt

不起作用。 Plz帮助。

8 个答案:

答案 0 :(得分:51)

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

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

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

编辑:类似的问题可以在这里找到:Why no output is shown when using grep twice?

答案 1 :(得分: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参数设置输出文件。

答案 2 :(得分:3)

编辑: 这似乎有效

 ./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

答案 3 :(得分:1)

试试这个

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

答案 4 :(得分:1)

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

adb logcat -v time testapk1 testapk2 *:S -d > adblogfilter.log 

答案 5 :(得分:1)

Save LogCat To A Text File

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

答案 6 :(得分:1)

尝试adb logcat | grep ABC | tee out

答案 7 :(得分:0)

试试这个

adb logcat -d -e "ABC" > std.txt