Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android grep亚洲开发银行logcat&;将输出写入文本文件_Android_File_Text_Grep_Logcat - Fatal编程技术网

Android grep亚洲开发银行logcat&;将输出写入文本文件

Android grep亚洲开发银行logcat&;将输出写入文本文件,android,file,text,grep,logcat,Android,File,Text,Grep,Logcat,我想grep adb logcat&将输出写入文本文件。 如果我这么做的话 ./adb logcat > std.txt 它将整个日志写入文本文件&如果我这样做的话 ./adb logcat | grep ABC 它将包含ABC的所有行打印到我的终端。但现在我想搜索ABC&只将这些行写入文本文件 ./adb logcat | grep ABC > std.txt 不起作用。请提供帮助。试试这个 ./adb logcat -s "ABC" > std.txt 类似这样的内

我想grep adb logcat&将输出写入文本文件。 如果我这么做的话

./adb logcat > std.txt
它将整个日志写入文本文件&如果我这样做的话

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

./adb logcat | grep ABC > std.txt
不起作用。请提供帮助。

试试这个

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

类似这样的内容可能会查找所有包含单词time、testapk1和testapk2的条目

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

我认为grep缓冲有问题。您可以尝试以下方法:

./adb logcat | grep --line-buffered ABC > std.txt
对于链式grep,这应该是相同的问题

编辑:类似的问题可以在这里找到:。

编辑: 这似乎有效

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

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

这对我来说很有用:

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


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

尝试
adb logcat | grep ABC | tee out
尝试此操作

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

抱歉UdayaLakmal&svnpenn,但这不起作用。它只是将这些行写入文件:-----开始/dev/log/system------开始/dev/log/main您是否运行了生成“ABC”字符串的应用程序,我对此进行了测试,下面是我对字符串“drriveAPI”的结果adb服务器已过期。杀人…*守护进程已成功启动*-----开始于/dev/log/main------开始于/dev/log/system D/drriveAPI(27329):?D/drriveAPI(27329):URLhttp://d.com/tag/abcdef/assign? D/drriveAPI(27329):?D/drriveAPI(27329):URLhttp://d.com/tag/abcdef/assign?I 看到同样的问题了吗。如果我使用
adb logcat | grep ABC
生成字符串“XYZ”,然后使用
adb logcat | grep ABC | grep XYZ
我将一无所获。我绝对确信输出行是同时包含“ABD”和“XYZ”的产品。这是怎么回事?哪个主机操作系统,哪个grep?例如,在我的OS X上使用提供的BSD grepIf,如果您使用eclipse,您可以使用特殊的“保存”按钮,该按钮正是这样做的…:菲,检查我的答案。这是一个有效的解决方案!:)谢谢你的回答。这很有道理,grep正在缓冲来自logcat的大量输出,然后再返回。因此,管道中grep之后的任何内容,只有在grep准备发出大量数据时才会接收输出。但是通过在grep中对它进行行缓冲,grep将在管道中向前过滤时发出每一行。我不确定我是如何通过不知道“-line buffered”得到的。这个答案值得更多的投票!