我有一个问题。我需要解析下面给出的 dumpsys 输出:
Activity Resolver Table:
Non-Data Actions:
android.intent.action.MAIN:
422df0c8. com.sec.factory.camera/com.sec.android.app.camerafirmware.CameraFirmware filter 422df360
Action: "android.intent.action.MAIN"
Category: "android.intent.category.DEFAULT"
422df610 com.sec.factory.camera/com.sec.android.app.camerafirmware.CameraFirmware_user filter 422b65f0
Action: "android.intent.action.MAIN"
Category: "android.intent.category.DEFAULT"
420d08e8 com.sec.factory.camera/com.sec.android.app.camerafirmware.CameraFirmwareUpdate_Booting filter 420d0ac8
Action: "android.intent.action.MAIN"
Category: "android.intent.category.DEFAULT"
com.sec.android.app.camaftest.SCAN:
420a2220 com.sec.factory.camera/com.sec.android.app.camaftest.CaptureActivity filter 4209f468
Action: "com.sec.android.app.camaftest.SCAN"
Category: "android.intent.category.DEFAULT"
Receiver Resolver Table:
Schemes:
android_secret_code:
422b69b0. com.sec.factory.camera/com.sec.android.app.camerafirmware.CameraFirmwareBroadCastReceiver filter 422b6b80
Action: "android.provider.Telephony.SECRET_CODE"
Scheme: "android_secret_code"
Authority: "34971539": -1
Authority: "7412365": -1
Non-Data Actions:
android.intent.action.BOOT_COMPLETED:
420d0c70. com.sec.factory.camera/com.sec.android.app.camerafirmware.CameraFirmwareBroadCastReceiver filter 420d0d18
Action: "android.intent.action.BOOT_COMPLETED"
从这个输出(来自 android 中名为 dumpsys 的工具)中,我想获取 Non-Data Actions:
标题下的内容only(我不,例如,需要 Receiver Resolver Table:
标题下的内容)。
我希望最好在 Perl 中执行此操作,但欢迎其他建议。
最佳答案
你没有说你是否想要标题本身 - 在这里我假设你确实想要它。这是“Unix 过滤器”样式的编写方式,这意味着您需要将转储数据通过管道传输到其中,或者将包含数据的文件名作为脚本的第一个参数提供。
#!/usr/bin/env perl
use v5.12;
my $target = 'Non-Data \s+ Actions:';
my $taking_data = 0;
while (<>) {
$taking_data = 1 if (/ ^ \s* $target \s* /x) ;
print if $taking_data;
$taking_data = 0 if / ^ \s* $ /x ;
}
像这样运行:$ cat dump_data.txt | ./android.pl
或 $ ./android.pl dump_data.txt
生成:
Non-Data Actions:
android.intent.action.MAIN:
422df0c8. com.sec.factory.camera/com.sec.android.app.camerafirmware.CameraFirmware filter 422df360
Action: "android.intent.action.MAIN"
Category: "android.intent.category.DEFAULT"
422df610 com.sec.factory.camera/com.sec.android.app.camerafirmware.CameraFirmware_user filter 422b65f0
Action: "android.intent.action.MAIN"
Category: "android.intent.category.DEFAULT"
420d08e8 com.sec.factory.camera/com.sec.android.app.camerafirmware.CameraFirmwareUpdate_Booting filter 420d0ac8
Action: "android.intent.action.MAIN"
Category: "android.intent.category.DEFAULT"
com.sec.android.app.camaftest.SCAN:
420a2220 com.sec.factory.camera/com.sec.android.app.camaftest.CaptureActivity filter 4209f468
Action: "com.sec.android.app.camaftest.SCAN"
Category: "android.intent.category.DEFAULT"
Non-Data Actions:
android.intent.action.BOOT_COMPLETED:
420d0c70. com.sec.factory.camera/com.sec.android.app.camerafirmware.CameraFirmwareBroadCastReceiver filter 420d0d18
Action: "android.intent.action.BOOT_COMPLETED"
没有太多内容;如果我们在一行上找到目标,则设置一个标志(可选地由空格包围);如果我们看到空行,则清除标志;和之间;如果设置了标志,则打印该行。
正则表达式末尾的 '/x' 打开“扩展模式”,允许无关紧要 正则表达式中的空白以使布局更清晰。
关于perl - 需要解析这个 dumpsys 输出(最好使用 Perl),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35807527/