ファイルに一致させる文字列が与えられた場合、一致する文字列から特定の距離に表示されない特定の行をどのように出力できますか?

ファイルに一致させる文字列が与えられた場合、一致する文字列から特定の距離に表示されない特定の行をどのように出力できますか?

タイトルは本文をあまり捉えません。修正リクエスト


android.permission.CAMERAの出力で一致させたい文字列がありますadb shell dumpsys package。私の目標は、その権限を使用するアプリケーションのパッケージ名を一覧表示することですandroid.permission.CAMERA

次の例を考えてみましょう。これにより、次のような結果がadb shell dumpsys com.google.android.GoogleCamera得られます。

パッケージ [com.google.android.GoogleCamera](cbd5725):
  ...
  applicationInfo=ApplicationInfo{235b16ab com.google.android.GoogleCamera}
  ...
  dataDir=/data/data/com.google.android.GoogleCamera
  ...
  付与された権限:
  ...
  ...
  Android、許可、カメラ
  ...

パッケージ名を知っているので具体的な例です。元のコマンドにはadb shell dumpsys package権限が表示されます。他。、インストールされているすべてのアプリケーションの中から。

私がやりたいことは、どのアプリケーションが権限を要求したかを調べることですandroid.permission.CAMERA

システムにインストールされているさまざまなアプリケーションをすべて考慮すると、次の間に一定の距離はありません。

  • Package [PKG_NAME] (ID):そしてandroid.permission.CAMERA
  • applicationInfo=ApplicationInfo{235b16ab PKG_NAME}そしてandroid.permission.CAMERA
  • dataDir=/data/data/PKG_NAMEそしてandroid.permission.CAMERA

grep -Bnこれは、少なくとも出力に使用できないことを意味します。

これは確かに可能ですが、どこから始めるべきかわかりません。

完全ダンプadb shell dumpsys package:http://pasted.co/e0cd2d4dまたはhttps://paste.ee/p/ylpax


重要なのは、ラップトップではSlackware 14.1を使用し、ルート化されたAndroidデバイスではCOS12を使用していることです。

答え1

awkうまくいくかもしれません。それは次のとおりです。

awk -v RS='^Package ' '/android\.permission\.CAMERA/ {print $1}'

これは、先頭の行がPackage新しいアプリケーション記述の開始を示すと仮定します。

実際の内容を見るとPackage- で始まらず、2つのスペースにインデントさPackageれています。したがって、以下が機能します。

awk -v RS='\n +Package' '/android\.permission\.CAMERA/{print $1}'

これは、レコード区切り文字でスペースが続く改行文字を表示し、を含むPackage項目をフィルタリングしますandroid.permission.CAMERA。最初のフィールドはパッケージ名です。Verifiers:パッケージの説明が始まる前に権限が一覧表示され、印刷されます。

答え2

perl -nE '/Package \[([^\]]+)/ and $p=$1; /android.permission.CAMERA/ and say $p' datfile

したがって、これが行を一致させることですPackage [...](パッケージ名を$p逆参照変数として保存すると$1問題が発生します)。CAMERA行が表示されたら内容をエクスポートします$p。 (CAMERA最初のパッケージ行の前に行が表示されると、初期化されていない警告メッセージで失敗し、先行サブ定義はその行をBEGIN { $p = "dunno" }修正します。)これは簡単に実行できますが、そうawkではありませんawk

(入力データが空白行で区切られている場合、私の答えに()呼び出しが含まれる可能性がありますperl -00。)perldoc perlrun

関連情報