awk 명령을 사용하여 Excel 셀에서 특정 단어를 추출하는 방법은 무엇입니까?

awk 명령을 사용하여 Excel 셀에서 특정 단어를 추출하는 방법은 무엇입니까?

awk 명령을 사용하여 csv 셀에서 특정 단어를 추출하는 방법에 대한 도움이 필요합니까?

파일 이름: 감사 로그.csv

칼럼: D

{"CreationTime":"2022-05-24T19:40:38","Id":"034ad6cv-b57c-4d14-8f42-0a312a8c6423","Operation":"UserLoggedIn","OrganizationId":"b54f43fe-5553- 34cr-9d67-3ed3b8b1c487","RecordType":15,"ResultStatus":"성공","UserKey":"13f42edc-acc4-2d43-b042-8734d938c23d","UserType":0,"버전":1," 워크로드":"AzureActiveDirectory","ClientIP":"192.223.211.111","ObjectId":"00000021-0322-0ff1-ce00-000000000000","UserId":"[이메일 보호됨]","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":"[이메일 보호됨]","Type":5}],"ActorContextId":"b45f44de-9876-22cf-9d34-3ed3b8b1c987","ActorIpAddress":"192.223.211.111","InterSystemsId":"b10f76da-cbf3-23a7-86d8-9876085 4baba ","IntraSystemId":"022ad6ab-b57c-4d09-8f67-0a983a8c8787","SupportTicketId":"","대상":[{"ID":"00000023-3243-0ff1-ce00-000000009887","유형 " :0}],"TargetContextId":"b23f34de-9890-23cf-9d34-3ed3b8b1c988","ApplicationId":"00000023-0230-0ff1-ce00-000000000000","DeviceProperties":[{"Name":"BrowserType " ,"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"

관련 정보