Android shell命令行中过滤adb logcat输出的几种方法

我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流之中,让开发者无所适从,严重影响开发效率。本文就具体介绍几种在shell命令行中过滤adb logcat输出的方法。

       1、只显示需要的输出(白名单)

最方便的当然是通过管道使用 grep 过滤了,这样可以使用 grep 强大的正则表达式匹配。简单的匹配一行当中的某个字符串,例如 MyApp:

  1. adb logcat | grep MyApp
  2. adb logcat | grep -i myapp #忽略大小写。
  3. adb logcat | grep --color=auto -i  myapp #设置匹配字符串颜色。更多设置请查看 grep 帮助。

进阶一点可以使用 grep 的正则表达式匹配。例如上一个例子会匹配一行中任意位置的 MyApp,可以设置为仅匹配 tag。默认的 log 输出如下,如果修改过输出格式相应的表达式也要修改。

I/CacheService(  665): Preparing DiskCache for all thumbnails.

可以看出 tag 是一行开头的第三个字符开始,根据这点写出表达式:

adb logcat | grep "^..MyApp"

根据这个格式也可以设置只显示某个优先级的 log,再匹配行首第一个字符即可。例如仅显示 Error 级别 tag 为 MyApp 的输出:

adb logcat | grep "^E.MyApp"

当然也可以匹配多个,使用 | 分割多个匹配表达式,要加转义符。例如要匹配 tag 为 MyApp 和 MyActivity 的输出:

adb logcat | grep "^..MyApp\|^..MyActivity"
       adb logcat | grep -E "^..MyApp|^..MyActivity"  #使用 egrep 无须转义符

2、过滤不需要的输出(黑名单)

还是使用 grep,用法也跟上面的一样,加一个 -v 即可。例如要过滤 tag 为 MyApp 和 MyActivity 的输出:

adb logcat | grep -v "^..MyApp\|^..MyActivity"
       adb logcat | grep -vE "^..MyApp|^..MyActivity"  #使用 egrep 无须转义符

  3、显示同一个进程的所有输出

有时一个程序里面的 tag 有多个,需要输出该程序(同一个 PID)的所有 tag;仅使用 tag 过滤有时也会漏掉一些错误信息,而一般错误信息也是和程序同一个 PID。还是通过 grep 实现,思路是先根据包名找到 pid 号,然后匹配 pid。写成 shell 脚本如下,参数是程序的 java 包名(如 com.android.media)。

  #!/bin/bash
  packageName=$1
  pid=`adb shell ps | grep $packageName | awk ‘{print $2}'`
  adb logcat | grep –color=auto $pid

       4、从当前开始显示

logcat 有缓存,如果仅需要查看当前开始的 log,需要清空之前的。

adb logcat -c && adb logcat

       5、过滤 log 文件

有时需要分析 log 文件,过滤 log 文件还是使用 grep。例如 log 文件为 myapp.log,要匹配 tag 为 MyApp 和 MyActivity 的输出,然后输出到 newmyapp.log:

cat myapp.log | grep "^..MyApp\|^..MyActivity" > newmyapp.log

Windows 下推荐使用Notepad++,一个免费强大的记事本,支持正则表达式查找替换。可以高亮显示匹配内容,也可以删除不需要的内容。

以上的技巧主要用到了 grep,其实 logcat 本身也有过滤功能,可以根据 tag、优先级过滤 log,具体请参考 Android 官方文档Reading and Writing Logs。如果喜欢使用图形界面,请参考Using DDMS,DDMS 里面的 logcat 也可以同样过滤。

以上就是Android shell命令行中过滤adb logcat输出的几种方法的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!

(0)

相关推荐

  • 使用adb命令向Android模拟器中导入通讯录联系人的方法

    本文实例讲述了使用adb命令向Android模拟器中导入通讯录联系人的方法.分享给大家供大家参考.具体实现方法如下: 使用adb提供的命令, 可以非常方便地从PC中将通讯录导入android模拟器中. 首先要先准备好固定格式的contacts.vcf文件, 该文件即android中的通讯录存储文件. 格式如下: 复制代码 代码如下: BEGIN:VCARD  VERSION:3.0  N:15200000000;;;;  TEL;TYPE=cell:15200000000  END:VCARD 

  • Android adb logcat 命令查看日志详细介绍

    Android 开发的程序员开发程序的时候,一定为log而苦恼过吧.Eclipse老是Log找不到,是不是很让人不爽,虽然Android Studio的Logcat功能很不错,但也没有在命令行terminal中打印出来更方便. 使用 logcat 命令 查看和跟踪系统日志缓冲区的命令logcat的一般用法是: [adb] logcat [<option>] ... [<filter-spec>] ... 下文介绍过滤器和命令选项,详细内容可参见Listing of logcat C

  • 一些比较实用的 Android adb 命令分享

    下面是一些我找到Android的ADB有用的命令.可以手动或使用自动构建和测试过程. 查看设备 复制代码 代码如下: adb devices 如果多个设备连接则使用 use adb -s DEVICE_ID连接到目标设备 安装应用 使用install命令安装一个apk包,如果应用已安装到了该设备,则使用-r重新安装和保持原来的应用数据 复制代码 代码如下: adb install -r APK_FILE #example adb install -r com.feiliu.wjbd 卸载一个应用

  • Android ADB常用命令总结

    ADB全称Android Debug Bridge, 是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的andriod设备(手机). 它的主要功能有: 运行设备的shell(命令行) 管理模拟器或设备的端口映射 计算机和设备之间上传/下载文件 将本地apk软件安装至模拟器或android设备 ADB是一个客户端-服务器端程序,其中客户端是你用来操作的电脑,服务器端是android设备.先说安装方法,电脑上需要安装客户端.客户端包含在SDK里.设备上不

  • Android shell命令行中过滤adb logcat输出的方法

    我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流之中,让开发者无所适从,严重影响开发效率.本文就具体介绍几种在shell命令行中过滤adb logcat输出的方法.        1.只显示需要的输出(白名单) 最方便的当然是通过管道使用 grep 过滤了,这样可以使用 grep 强大的正则表达式匹配.简单的匹配一行当中的某个字符串,例如 MyApp: adb logcat | grep MyApp        adb logcat |

  • android adb实用命令小结

    adb对于Android程序员来说在日常的工作中使用频率很高,现将自己工作中常用的adb命令总结一下备忘,方便查询,也供大家参考.查看应用内存占用,耗电信息,启动时间,wakelock,跑monkey的命令在之前的应用性能优化中起了不小的作用.以下adb命令的测试机器为小米3,其中package_name代表包名. 基础脚本: 1.启动adb服务 adb start-server 2.终止adb服务 adb kill-server 3.进入adb运行环境 adb shell 4.获取帮助 里面有

  • android调试工具adb命令大全

    一.adb介绍SDK的Tools文件夹下包含着Android模拟器操作的重要命令adb,adb的全称为(Android Debug Bridge就是调试桥的作用.通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序.借助这个工具,我们可以管理设备或手机模拟器的状态.还可以进行以下的操作: 1.快速更新设备或手机模拟器中的代码,如应用或Android 系统升级: 2.在设备上运行shell命令: 3.管理设备或手机模拟器上的预定端口: 4.在设备或手机模拟器上复制或粘贴文件

  • Android shell命令行中过滤adb logcat输出的几种方法

    我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流之中,让开发者无所适从,严重影响开发效率.本文就具体介绍几种在shell命令行中过滤adb logcat输出的方法.        1.只显示需要的输出(白名单) 最方便的当然是通过管道使用 grep 过滤了,这样可以使用 grep 强大的正则表达式匹配.简单的匹配一行当中的某个字符串,例如 MyApp: adb logcat | grep MyApp adb logcat | grep -i

  • shell 命令行中操作HBase数据库实例详解

     shell 命令行中操作HBase数据库 Shell控制 进入到shell命令行界面,执行hbase命令,并附加shell关键字: [grid@hdnode3 ~]$ hbase shell HBase Shell; enter ¨help¨ for list of supported commands. Type "exit" to leave the HBase Shell Version 0.90.5, r1212209, Fri Dec 9 05:40:36 UTC 2011

  • python shell命令行中import多层目录下的模块操作

    首先在文件夹中添加_init_.py文件,即使是空文件也可以,多层文件夹,每层文件夹中都要添加. 比如我要import,a文件夹中,b文件夹下的 c.py 我就需要在a,b文件夹中都添加_init_.py文件. 然后引入方式:import a.b.c 然后在调用c.py的函数时,直接c.f()是不行的,需要a.b.c.f(). 当然也可以先写 c = a.b.c,然后再c.f(). 补充知识:Python IDLE shell中引入模块 安装了Python之后,会自带一个Python IDLE,

  • Shell命令行中特殊字符与其转义详解(去除特殊含义)

    特殊符号及其转义 大家都知道在一个shell命令是由命令名和它的参数组成的, 比如 cat testfile, 其中cat是命令名, testfile是参数. shell将参数testfile传递给cat命令. 但是, 如果参数中含有特殊字符, 比如说*, *我们知道,是表示任意多个(包括0个)任意字符. 那么shell的工作方式是,它会对这些特殊字符进行预先处理, 然后再将处理的结果传给那个命令. 比如说,如果你的当前目录有file, file1, file2 三个文件, 那么当你执行cat

  • CMD命令行中以管理员权限启动应用程序实现方法

    很多时候我们需要管理员权限来运行bat那么就需要结合vbscript来实现了 方法一: %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit 常用 @echo off mode con lines=30

  • 神奇的shell命令行输入与输出功能介绍

    标准输入/输出和重定向,Linux发行版Fedora Core Linux,而Red Hat公司原来Red Hat Linux的开发团队也将继续参与这一发行版本的开发工作. 标准输入与输出 我们知道,执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘:标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都对应终端的屏幕.进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中.

  • 详解Shell 命令行批量处理图片文件名的实例

    Shell 命令行批量处理图片文件名 前言: 从网上下载了一堆图片,有的是*.jpg的,有的是*.jpeg的.并且文件名有长有短,很是糟心.因此,我想把这些文件给全部整理好,当然是用shell来处理啦! 说干就干. 循环所有文件 首先,我把所有的乱七八糟的图片,全部放在 ./image/ 这个文件夹下面. 然后在外层写一个i.sh的shell文件,录入下面的内容. 我的文件结构演示如下: 文件 image/xxx.jpg image/xxx.jpeg i.sh for f in $(find .

  • 在 Linux 命令行中使用 tcpdump 抓包的一些功能

    tcpdump 是一款灵活.功能强大的抓包工具,能有效地帮助排查网络故障问题. 以我作为管理员的经验,在网络连接中经常遇到十分难以排查的故障问题.对于这类情况, tcpdump 便能派上用场. tcpdump 是一个命令行实用工具,允许你抓取和分析经过系统的流量数据包.它通常被用作于网络故障分析工具以及安全工具. tcpdump 是一款强大的工具,支持多种选项和过滤规则,适用场景十分广泛.由于它是命令行工具,因此适用于在远程服务器或者没有图形界面的设备中收集数据包以便于事后分析.它可以在后台启动

  • Linux ftp 命令行中下载文件get与上传文件put的命令应用详解

    介绍:从本地以用户anok登录的机器192.168.0.16上通过ftp远程登录到192.168.0.6的ftp服务器上,登录用户名是peo.以下为使用该连接做的实验. 查看远程ftp服务器上用户peo相应目录下的文件所使用的命令为:ls,登录到ftp后在ftp命令提示符下查看本地机器用户anok相应目录下文件的命令是:!ls.查询ftp命令可在提示符下输入:?,然后回车. 1.从远程ftp服务器下载文件的命令格式: get  远程ftp服务器上当前目录下要下载的文件名  [下载到本地机器上当前

随机推荐