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
、値だけを望む場合は一番下までスクロールして単一行を表示できます。
json
1. 読みやすくするために 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"