【问题标题】:grep the adb logcat & write the output to a text filegrep adb logcat 并将输出写入文本文件
【发布时间】:2013-01-20 00:53:41
【问题描述】:

我想 grep adb logcat 并将输出写入文本文件。 如果我只是这样做

./adb logcat > std.txt

它将整个日志写入文本文件,如果我这样做了

./adb logcat | grep ABC

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

./adb logcat | grep ABC > std.txt

不起作用。请帮忙。

【问题讨论】:

  • 我看到了同样的问题。如果我执行adb logcat | grep ABC 会产生字符串“XYZ”,然后执行adb logcat | grep ABC | grep XYZ 我什么也得不到。而且我绝对肯定会生成包含“ABD”和“XYZ”的输出行。这是怎么回事?
  • 哪个主机操作系统,哪个 grep?作品例如在我的 OS X 上使用提供的 BSD grep
  • 如果您使用 eclipse,您可以使用特殊的“保存”按钮来完成此操作...:P
  • 嘿,检查我的答案。这是一个有效的解决方案! :)
  • 感谢所有出色的答案。这很有意义,grep 在返回之前缓冲了大量来自 logcat 的输出。因此,无论管道中的 grep 之后是什么,只有在准备好从 grep 发出大量数据时才会接收输出。但是通过在 grep 中对其进行行缓冲,grep 将在管道中向前过滤时发出每一行。

标签: android file text grep logcat


【解决方案1】:

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

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

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

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

【讨论】:

  • 我不知道我是怎么知道“--line-buffered”的。这个答案值得更多的支持!
【解决方案2】:

编辑: 这似乎有效

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

    这对我有用:

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

    解释: ./adb logcat 打开 logcat,然后通过管道到 grep ABC,该管道将行过滤到包含 ABC 的行,然后再次通过管道到 @987654325 @ 最后将其打印到文件中。 of=xxx参数设置输出文件。

    【讨论】:

      【解决方案4】:

      试试adb logcat | grep ABC | tee out

      【讨论】:

        【解决方案5】:

        试试这个

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

        【讨论】:

        • 对不起 UdayaLakmal & svnpenn,但这不起作用。它只是将这些写入文件的行: --------- /dev/log/system 的开头 --------- /dev/log/main 的开头
        • 您是否运行了产生“ABC”字符串的应用程序,我对此进行了测试,以下是我对字符串“drriveAPI”的结果 adb 服务器已过期。杀死... * 守护进程成功启动 * --------- /dev/log/main 的开头 --------- /dev/log/system D/drriveAPI 的开头(27329): d.com/tag/abcdef/assign? D/driveAPI(27329): URLhttp://d.com/tag/abcdef/assign? D/driveAPI(27329):d.com/tag/abcdef/assign? D/driveAPI(27329): URLhttp://d.com/tag/abcdef/assign?
        【解决方案6】:

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

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

        【讨论】:

          【解决方案7】:

          Save LogCat To A Text File

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

          【讨论】:

            【解决方案8】:

            试试这个

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-06-19
              • 2016-03-11
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-11-25
              • 2016-09-10
              • 2016-07-13
              相关资源
              最近更新 更多