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

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

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


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:パッケージの説明が始まる前に権限が一覧表示され、印刷されます。

おすすめ記事