awkコマンドを使用してExcelセルから特定の単語を抽出する方法は?

awkコマンドを使用してExcelセルから特定の単語を抽出する方法は?

awkコマンドを使用してcsvセルから特定の単語を抽出する方法についてヘルプが必要ですか?

ファイル名: 監査ログ.csv

コラム:D

{"CreationTime":"2022-05-24T19:40:38","Id":"034ad6cv-b57c-4d14-8f42-0a312a8c6423","Operation":"UserLoggedIn","OrganizationId":"bc 34cr-9d67-3ed3b8b1c487","RecordType":15,"ResultStatus":"成功","UserKey":"13f42edc-acc4-2d43-b042-8734d938c23d","UserType":0,ワークロード":"AzureActiveDirectory","ClientIP":"192.223.211.111","ObjectId":"00000021-0322-0ff1-ce00-000000000000","UserId":"[Eメール保護]","AzureActiveDirectoryEventType":1,"ExtendedProperties":[{"Name":"ResultStatusDetail","Value":"Success"},{"Name":"UserAgent","Value":"JAS3POPE"},{ "名前":"UserAuthenticationMethod","値":"1"},{"名前":"要求タイプ","値":"OAuth2:Token"}],"ModifiedProperties":[],"Actor": [{"ID":"034ad6cv-b57c-4d14-8f42-0a312a8c6423","タイプ":0},{"ID":"[Eメール保護]","Type":5}],"ActorContextId":"b45f44de-9876-22cf-9d34-3ed3b8b1c987","ActorIpAddress":"192.223.211.111","InterSystemsId":"b108 4baba ","IntraSystemId":"022ad6ab-b57c-4d09-8f67-0a983a8c8787","SupportTicketId":"","ターゲット":[{"ID":"00000023-3243-0ff0-8008 " :0}],"TargetContextId":"b23f34de-9890-23cf-9d34-3ed3b8b1c988","ApplicationId":"00000023-0230-0ff1-ce00-00000000000row","Type" " ,"value":"Other"},{"name":"IsCompliantAndManaged","value":"False"},{"name":"SessionId","value":"b8787err-4afb-9898-bebb - 498f8e9898abb"}],"エラー番号":"0"}

この列から私が抽出したい単語はActorIpAddress:192.223.211.111です。

awkコマンドや他のツールを使って抽出するのに役立つ人はいますか?これらすべてがD列にあります。

注:プライバシーのために、すべての詳細は任意の文字に変更されました。

よろしくお願いします。ジェイ

ベストアンサー1

監査ファイルは実際にフォーマットされたjsonファイルです。この場合、jqパッケージマネージャ(たとえば、sudo apt install jq..を備えた簡単な分析を提供しますがjq、値だけを望む場合は一番下までスクロールして単一行を表示できます。

json1. 読みやすくするために AuditLog.csv ファイル形式を指定する方法:

cat AuditLog.csv | jq

端末内で実行される場合、上記のコマンドの出力は次のようになります(色も表示する必要がありますが、そうでない場合は上記のコマンドの-C後にフラグを追加します)。jq

{
  "Actor": [
    {
      "ID": "034ad6cv-b57c-4d14-8f42-0a312a8c6423",
      "Type": 0
    },
    {
      "ID": "[email protected]",
      "Type": 5
    }
  ],
  "ActorContextId": "b45f44de-9876-22cf-9d34-3ed3b8b1c987",
  "ActorIpAddress": "192.223.211.111",
  "ApplicationId": "00000023-0230-0ff1-ce00-000000000000",
  "AzureActiveDirectoryEventType": 1,
  "ClientIP": "192.223.211.111",
  "CreationTime": "2022-05-24T19:40:38",
  "DeviceProperties": [
    {
      "Name": "BrowserType",
      "Value": "Other"
    },
    {
      "Name": "IsCompliantAndManaged",
      "Value": "False"
    },
    {
      "Name": "SessionId",
      "Value": "b8787err-4afb-9898-bebb-498f8e9898abb"
    }
  ],
  "ErrorNumber": "0",
  "ExtendedProperties": [
    {
      "Name": "ResultStatusDetail",
      "Value": "Success"
    },
    {
      "Name": "UserAgent",
      "Value": "JAS3POPE"
    },
    {
      "Name": "UserAuthenticationMethod",
      "Value": "1"
    },
    {
      "Name": "RequestType",
      "Value": "OAuth2:Token"
    }
  ],
  "Id": "034ad6cv-b57c-4d14-8f42-0a312a8c6423",
  "InterSystemsId": "b10f76da-cbf3-23a7-86d8-98760854baba",
  "IntraSystemId": "022ad6ab-b57c-4d09-8f67-0a983a8c8787",
  "ModifiedProperties": [],
  "ObjectId": "00000021-0322-0ff1-ce00-000000000000",
  "Operation": "UserLoggedIn",
  "OrganizationId": "b54f43fe-5553-34cr-9d67-3ed3b8b1c487",
  "RecordType": 15,
  "ResultStatus": "Success",
  "SupportTicketId": "",
  "Target": [
    {
      "ID": "00000023-3243-0ff1-ce00-000000009887",
      "Type": 0
    }
  ],
  "TargetContextId": "b23f34de-9890-23cf-9d34-3ed3b8b1c988",
  "UserId": "[email protected]",
  "UserKey": "13f42edc-acc4-2d43-b042-8734d938c23d",
  "UserType": 0,
  "Version": 1,
  "Workload": "AzureActiveDirectory"
}

2. すべての最上位キーのリストを取得する方法:

前のコマンドは構造化され、色付きの出力を提供しますjsonが、ログ内の特定の値を見つけるときはまだ解析する必要があります。jqこの値とその他の値は、key = valueペアを介して簡単に提供できます。つまり、キーを提供すると、そのjq値が提供されます。構文形式は次のとおりです。

`cat[file.json] | jq '.[key].[subkey][.subsubkey]'

  • では、一般的に利用可能な最上位キーのリストを最初に見てみましょう。
cat AuditLog.csv | jq 'keys'
[
  "Actor",
  "ActorContextId",
  "ActorIpAddress",
  "ApplicationId",
  "AzureActiveDirectoryEventType",
  "ClientIP",
  "CreationTime",
  "DeviceProperties",
  "ErrorNumber",
  "ExtendedProperties",
  "Id",
  "InterSystemsId",
  "IntraSystemId",
  "ModifiedProperties",
  "ObjectId",
  "Operation",
  "OrganizationId",
  "RecordType",
  "ResultStatus",
  "SupportTicketId",
  "Target",
  "TargetContextId",
  "UserId",
  "UserKey",
  "UserType",
  "Version",
  "Workload"
]

3. 最後のステップ - 与えられたキーに対応する値を取得します。

キー名がわかったら、それを使用して保存された値を取得できます。あなたの場合は、特に以下を探していますActorIpAddressノート.:値を取得するたびに、キー名の前に必須項目を書き留めます。)

cat AuditLog.csv | jq '.ActorIpAddress'

"192.223.211.111"

追加:複数の値またはチェーンの下の値をさらに取得する必要がある場合。

例 1: 「ActorIpAddress、UserId、UserKey」と一緒に入力します。

 cat stack.csv | jq ".ActorIpAddress, .UserId,.UserKey"
"192.223.211.111"
"[email protected]"
"13f42edc-acc4-2d43-b042-8734d938c23d"

前任者。 2:ユーザーエージェントキー「UserAgent」の値とOAuth一致値のキーを取得し、key = value形式で出力します。

 $cat stack.json | jq -C '.ExtendedProperties[] | select(.Name=="UserAgent" or .Value=="OAuth2:Token") | "\(.Name) = \(.Value)"'
"UserAgent = JAS3POPE"
"RequestType = OAuth2:Token"

おすすめ記事