2016-03-04 27 views
2

我有一個問題。我需要解析這個下面dumpsys輸出給定:需要解析這個dumpsys輸出(最好用Perl)

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" 

從(稱爲機器人dumpsys從工具)這個輸出,我想獲得下Non-Data Actions:內容標題(我不這樣做,例如,需要Receiver Resolver Table:標題下的內容)。

我希望在Perl中這樣做,但其他建議值得歡迎。

回答

2

你不會說如果你想要標題本身 - 在這裏我推測你確實需要它。這是寫成「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」

+0

是的,正是我needed.Thanks ! – user553637

+0

如果這正是你想要的,請考慮最新投票和/或接受答案。 – Marty

+0

哎呀,我忘了大聲笑......儘管答案完美。我是Perl的新手,所以需要一點幫助。謝謝! – user553637

0

根據這些日誌究竟如何格式化的,你可以選擇你想與SED塊,例如假設每塊後跟一個空行:

$ sed -n '/Non-Data Actions:/,/^$/p' dumpsys 
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"