다음 JSON 출력이 있습니다.
[
{
"enabled": "true",
"policy_profile": "custom",
"scan_local_files": "true",
"local_file_types": "all",
"scan_network_files": "false",
"limit_file_size": "false",
"enable_archive_scanning": "false",
"scan_boot_sectors": "true",
"scan_only_new_changes": "true",
"scan_for_keyloggers": "true",
"scan_for_puas": "true",
"deferred_scanning": "true",
"scan_action_for_infected_files": "Move to quarantine",
"scan_action_for_infected_files_secondary": "Move to quarantine",
"scan_action_for_suspect_files": "Move to quarantine",
"scan_action_for_suspect_files_secondary": "Deny Access"
}
]
나는 출력을 역 테이블처럼 보이게 만드는 데 어려움을 겪었습니다. 다음과 같이 만들 수 있습니다.
deferred_scanning enable_archive_scanning enabled limit_archive_size limit_file_size local_file_types max_archive_depth policy_profile scan_action_for_infected_files scan_action_for_infected_files_secondary scan_action_for_suspect_files scan_action_for_suspect_files_secondary scan_boot_sectors scan_for_keyloggers scan_for_puas scan_local_files scan_network_files scan_only_new_changes
----------------- ----------------------- ------- ------------------ --------------- ---------------- ----------------- -------------- ------------------------------ ---------------------------------------- ----------------------------- --------------------------------------- ----------------- ------------------- ------------- ---------------- ------------------ ---------------------
true true true 5 false all 6 custom Move to quarantine Move to quarantine Move to quarantine Deny Access true true true true false true
하지만 이건 좀 지저분합니다. 저는 다음과 같은 것을 원합니다:
Attribute Value
--------- -----
enabled true
policy_profile custom
scan_local_files true
...
이 특정 문제를 다루는 기존 SE 질문에 대한 도움이나 조언을 주시면 대단히 감사하겠습니다.
답변1
이것은 입력 데이터에 작동하는 것 같습니다
jq -r '.[] | to_entries[] | [.key,.value] | @tsv' file.json
출력(탭으로 구분):
enabled true
policy_profile custom
scan_local_files true
local_file_types all
scan_network_files false
limit_file_size false
enable_archive_scanning false
scan_boot_sectors true
scan_only_new_changes true
scan_for_keyloggers true
scan_for_puas true
deferred_scanning true
scan_action_for_infected_files Move to quarantine
scan_action_for_infected_files_secondary Move to quarantine
scan_action_for_suspect_files Move to quarantine
scan_action_for_suspect_files_secondary Deny Access
그런 다음 비교적 간단한 awk
도구나 기타 도구를 사용하여 원하는 대로 형식을 지정하세요.
Attribute
및 열이 첫 번째 행이 되도록 하려면 Value
다음과 같이 명령을 변경하십시오.
jq -r '[ "Attribute", "Value"], ( .[] | to_entries[] | [.key,.value] ) | @tsv' file.json
인용하다jq: 객체의 각 항목의 키와 값을 인쇄합니다., 방금 소개받았어요 to_entries
.