我想要点击adb logcat&将输出写入文本文件。 如果我只是做
./adb logcat > std.txt
它将整个日志写入文本文件&如果我做
./adb logcat | grep ABC
它将包含ABC的所有行打印到我的终端。但现在我想搜索ABC&只将这些行写入文本文件。
./adb logcat | grep ABC > std.txt
不起作用。 Plz帮助。
答案 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)
“要将LogCat保存到文本文件,请打开终端窗口并键入: adb logcat -d> logcat.txt“
答案 6 :(得分:1)
尝试adb logcat | grep ABC | tee out
答案 7 :(得分:0)
试试这个
adb logcat -d -e "ABC" > std.txt