API에서 컬을 통해 얻은 csv 파일에 새 행 삽입

API에서 컬을 통해 얻은 csv 파일에 새 행 삽입

CSV 파일 텍스트 파일의 문자열을 바꾸려고 합니다. 행 구분 기호 문자열은 {"id":CSV 파일이 하나의 행과 모든 열로만 표시되기 때문에 각 발생 앞에 새 행을 삽입하려고 합니다.

이상적으로는 파일을 쉼표로 구분하고 열로 변환해야 하며 모든 곳에서 {"id":"새 줄, 즉 새 줄로 변환되는 것처럼 보입니다.

각 열은 다음과 같이 구분되어야 합니다. "*":여기서 *는 임의의 텍스트를 의미합니다. 예: "TLP":또는"id":

다음은 파일의 예입니다. 예 텍스트는 각 라벨에 대해 3개의 행과 1개의 열을 생성해야 합니다.

괴로운 질문을 해서 죄송합니다. 제가 생각할 수 있는 sed와 awk의 모든 조합을 시도했지만 아무것도 작동하지 않았습니다.

{"id":"5863ddde2577f521dccd9a3a","name":"Switcher: Android가 공격 라우터 클럽에 가입","description":"최근 맬웨어로부터 세상을 보호하기 위한 끊임없는 탐구 과정에서 우리는 오작동하는 Android 트로이 목마를 발견했습니다. Android 운영 체제를 표적으로 삼는 악성 코드는 새로운 것이 아니지만, 이 트로이 목마는 사용자가 아니라 사용자가 연결된 Wi-Fi 네트워크, 더 정확하게는 사용자가 연결된 Wi-Fi 네트워크를 공격한다는 점에서 독특합니다. 사용자가 연결된 Wi-Fi 네트워크 Trojan.AndroidOS.Switcher로 알려진 이 트로이 목마는 라우터의 관리 웹 인터페이스에 대해 무차별 암호 추측 공격을 수행하며, 공격이 성공하면 악성코드는 DNS 서버를 변경합니다. 그러면 손상된 Wi-Fi 네트워크에 있는 장치의 모든 DNS 쿼리가 사이버 범죄자의 서버로 다시 라우팅됩니다(이러한 유형의 공격은 DNS 하이재킹이라고도 함). 따라서 Switcher가 무차별 대입 공격을 수행하는 방법을 자세히 설명하겠습니다. 라우터에서 DNS 하이재킹을 수행합니다. :["android","baidu","android","mobile","dns hijack","Trojan.AndroidOS.Switcher","Kaspersky"],"references":[ "hxxps ://securelist.com/ blog/mobile/76969/switcher-android-joins-the-attack-the-router-club/"],"revision":1.0,"metric":[{"content": "" ,"metric":" acdb7bfebf04affd227c93c97df536cf","description":"","create":"2016-12-28T15:44:31","is_active":1,"title":"","access_reason" :" ","access_type": "공개","access_groups":[],"role":null,"expiration":null,"type":"FileHash-MD5","id":1744766,"observation" :1 },{"콘텐츠 ":"","표시기":"64490fbecefa3fcdacd41995887fe510","설명":"","만들기":"2016-12-28T15:44:31","is_active":1," Title" :""," access_reason":"","access_type":"public","access_groups":[],"role":null,"expiration":null,"type":"FileHash-MD5", "id ":1744767," 관찰 결과":1},{"Content":"","Indicator":"101.200.147.153","Description":"","Creation":"2016-12-28T15: 44:31 ","is_active ":1,"제목":"","access_reason":"","access_type":"공개","access_groups":[],"역할":null,"만료됨": null,"유형":" IPv4","id":1744768,"관찰":1},{"content":"","indicator":"112.33.13.11","description":"","생성됨 ":"2016-12 - 28T15:44:31","is_active":1,"title":"","access_reason":"","access_type":"public","access_groups":[]," role":null,"만료됨":null,"type":"IPv4","id":1744769,"관찰 결과":1},{"content":"","indicator":"120.76.249.59" ,"설명":"" ,"만들기":"2016-12-28T15:44:31","is_active":1,"제목":"","access_reason":"","access_type":"public","access_groups":[ ], "role": null, "expires": null, "type": "IPv4", "id": 1744770, "observation ": 1}], "TLP": "녹색", "공공": true, "adversary":"", "targeted_countries": ["중국"], "industries": []}, {"id": "585bdcd497316a2db901eaa5","name":"우크라이나 야전 포병의 멋진 곰 추적","description":"2016년 늦여름에 CrowdStrike Intelligence 분석가는 "Попр-Д30.apk" 패키지(APK)라는 이상한 Android 소프트웨어를 조사하기 시작했습니다. 예비 연구에 따르면 이 패키지는 20세기에 개발된 포병 무기인 D-30 122mm 견인포와 관련이 있는 것으로 나타났습니다. 1960년대 소련에서 제작되었지만 오늘날에도 여전히 사용되고 있습니다. 심층적인 리버스 엔지니어링을 통해 APK에 X-Agent의 Android 변형이 포함되어 있으며 X의 Windows 변형에서 관찰된 것과 밀접하게 관련된 명령 및 제어 프로토콜이 포함되어 있음이 밝혀졌습니다. -에이전트는 매우 유사한 50바이트 기본 키를 갖는 RC4라는 암호화 알고리즘을 사용합니다. ","author_name":"AlienVault","modify":"2016-12-22T14:03:53.674000","create ": "2016-12-22T14:01:56.495000","tags":["apt28" ,"Fancy Bear","우크라이나","군사","X-에이전트","D-30","crowdstrike " ],"참조":["hxxps://www.crowdstrike.com/blog/danger -close-fancy-bear-tracking-ukrainian-field-artillery-units/","hxxps://www.crowdstrike. com/wp-content/brochures/FancyBearTracksUkrainianArtillery.pdf"],"개정":2.0,"표시기":[{"Content":"","표시기":"69.90.132.215","설명":"" , "create":"2016-12-22T14:01:57","is_active":1, "title":"","access_reason":"","access_type":"public","access_groups":[ ] , "role": "command_and_control", "expires": null, "type": "IPv4", "id": 1683228, "observations": 1}, {"content": "", "metrics": " 6f7523d3019fa190499f327211e01fcb " ,"설명":"","만들기":"2016-12-22T14:01:57","is_active":1,"title":"","access_reason":"","access_type": " public","access_groups":[],"role":null,"expiration":null,"type":"FileHash-MD5","id":1683229,"observations":2}],"TLP": " green","public":true,"adversary":"Fancy Bear","targeted_countries":["우크라이나"],"industries":["defence","military"]},{"id": " 585ae32297316a22f301eaa5 ","name":"가짜 앱이 Super Mario Run 버전을 악용합니다.","description":"올해 초 우리는 사이버 범죄자들이 Pokemon Go의 인기를 악용하여 자체 악성 앱을 출시하는 방법에 대해 논의했습니다. 마지막으로 우리는 다른 Nintendo 게임인 Super Mario에서도 같은 일이 일어나는 것을 관찰했습니다. \n\n공식 출시에 앞서 사이버 범죄자들은 ​​마리오 관련 앱을 출시했습니다. 2012년부터 우리는 9,000개 이상의 Mario 관련 앱을 발견했습니다. Mario의 이름을 사용하는 애플리케이션은 다양한 온라인 소스에서 사용할 수 있습니다. 이들 앱 중 약 3분의 2는 사용자 동의 없이 광고를 표시하고 앱을 다운로드하는 등 일종의 악의적인 행동을 보였습니다. ","author_name":"AlienVault","수정됨":"2016-12-21T20:16:34.201000" ,"create":"2016-12-21T20:16:34.201000","label":["Super Mali 오스트리아","android","Mario","Nintendo","Google Play","malware","trendmicro "],"참조":["hxxp://blog.trendmicro.com/trendlabs- security-intelligence /fake-apps-take-advantage-mario-run-release/"],"개정":1.0,"표시기":[{"콘텐츠":"","표시기":"8373aedc9819ff5dacb0fc1864eeb96adc5210b2","설명":"","만들기":"2016-12-21T20:16:35","is_active":1, "title":"","access_reason":"","access_type":"public","access_groups":[],"role":null,"expiration":null,"type":"FileHash-SHA1" ," id":1674453,"관찰":1},{"content":"","indicator":"4ba312a6eaf79da9036d4228a43f19c611345a5a","description":"","create":"2016-12-21T20:16: 35" ,"is_active":1,"title":"","access_reason":"","access_type":"공개","access_groups":[],"role":null,"expiration":null, "유형": "FileHash-SHA1", "id": 1674454, "관찰": 1}], "TLP": "녹색", "공개": true, "상대방": "", "targeted_countries": [ ],"산업":[]}]

답변1

다른 사람들이 댓글을 달았듯이 파일은 CSV가 아니라 JSON이므로 전용 JSON 파서를 사용해야 합니다.

JSON 라이브러리를 사용할 수 없는 곳에서 실행해야 하는 경우 배열을 3개의 CSV 형식 행으로 분할하는 것은 스크립트에 대한 충분히 간단한 문제입니다 sed.

s/},{"id":/\
"id":/g        # remove delimiter between records, insert newline
s/^\[\?{//     # remove delimiter before first record
s/}\]\?$//     # remove delimiter after last record

답변2

실제 답변은 아님: 그냥 간단하게예:

(입력 시작 부분에 누락된 "["를 추가한 후)

우리는 추출할 수 있습니다ID,저자 이름, 그리고TLP값은 다음과 같습니다.

$ jq '.[] | .id + ":" + .author_name + ":" + .TLP'   input
"5863ddde2577f521dccd9a3a:AlienVault:green"
"585bdcd497316a2db901eaa5:AlienVault:green"
"585ae32297316a22f301eaa5:AlienVault:green"

관련 정보