logcat 只打印符合包名的log

adb shell logcat | grep -E `adb shell ps | grep -E "btcontrol|stmonitor" | awk '{print $2}' | sed 'N;s/\n/|/g'`

只打印某两个进程的log:

adb shell logcat | grep -E "PID1|PID2"

列出符合某些报名的进程:

adb shell ps | grep -E "btcontrol|stmonitor"

system    5059  324   858408 58300 SyS_epoll_ 00000000 S com.senter.btcontrol
system    5096  324   1109700 52072 SyS_epoll_ 00000000 S com.senter.stmonitor

只要上面输出结果的两个进程号:

adb shell ps | grep -E "btcontrol|stmonitor" | awk '{print $2}'

5059
5096

将上面两个进程号合并为一行并用竖线字符'|'分割:

adb shell ps | grep -E "btcontrol|stmonitor" | awk '{print $2}' | sed 'N;s/\n/|/g'
5059|5096

上面sed 多行合并一行 sed ‘N;s/\n/|/g’  N;表示每2行合并 N;N; 表示每3行合并。

sed 's/PATTERN_SEARCH/REPLACED_STRING/g' 是全局搜索替换命令,搜索PATTERN_SEARCH替换为REPLACED_STRING。

上述命令合并为一行:

adb shell logcat | grep -E `adb shell ps | grep -E "btcontrol|stmonitor" | awk '{print $2}' | sed 'N;s/\n/|/g'`

即,只打印进程名字中含有btcontrol或stmonitor的两个进程的log。

你可能感兴趣的:(android)