APIからカールを介して取得したcsvファイルに新しい行を挿入する

APIからカールを介して取得したcsvファイルに新しい行を挿入する

CSVファイルテキストファイルの文字列を置き換えようとしています。行区切り文字列は、{"id":CSVファイルが1行とすべての列でのみ表示されるため、各発生の前に新しい行を挿入しようとします。

理想的には、ファイルをコンマで区切って列に変換する必要があり、どこでも新しい行{"id":"、つまり新しい行に変換されるようです。

各列は次のように区切る必要があります。"*":ここで、*は任意のテキストを意味します。例:"TLP":または"id":

以下はファイルの例です。はいテキストは、ラベルごとに3行と1列を生成する必要があります。

苦しい質問をして申し訳ありません。私が考えることができるsedとawkのすべての組み合わせを試しましたが、何も機能しませんでした。

{"id":"5863ddde2577f521dccd9a3a","name":"Switcher: Androidが攻撃ルータークラブに参加する","description":"最近のマルウェアから世界を保護するための絶え間ない探求の過程で、私たちは誤動作するAndroidトロイの木馬を発見しました。Androidオペレーティングシステムを標的とするマルウェアは新しいものではありませんが、このトロイの木馬はユーザーではなく、ユーザーが接続されたWi-Fiネットワーク、より正確にはユーザーが接続されたWi-Fiネットワークを攻撃するという点でユニークです。ユーザーが接続されたWi-FiネットワークTrojan.AndroidOS.Switcherとして知られているこのトロイの木馬は、ルータの管理Webインターフェイスに対して無差別パスワード推測攻撃を実行し、攻撃が成功するとマルウェアはDNSサーバーを変更します。 -Fiネットワーク上のデバイスのすべてのDNSクエリがサイバー犯罪者のサーバーにルーティングされます(このタイプの攻撃はDNSハイジャッキングとも呼ばれます)、したがってSwitcherが無差別代入攻撃を実行する方法を詳しく説明します。を実行します:["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アナリストは、「Popr-D30.apk」パッケージ(APK)と呼ばれる奇妙なAndroidソフトウェアを調査し始めました。あることがわかりました。1960年代にソ連で制作されましたが、今日でも依然として使用されています。これが含まれていることがわかりました - エージェントは、非常に似た50バイトの主キーを持つRC4という暗号化アルゴリズムを使用します。 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": " 6f7523d3019fa190499f32721 " ,"説明":"","作成":"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の人気を悪用して独自の悪意のあるアプリをリリースする方法について議論しました。公式リリースの前に、サイバー犯罪者はマリオ関連のアプリをリリースしました。約3分の2は、ユーザーの同意なしに広告を表示し、アプリをダウンロードするなど、悪意のある行動を示しています。 " ,"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"," "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 35" ,"is_active":1,"title":"","access_reason":"","access_type":"公開","access_groups":[],"role":null,"expiration":null, "タイプ": "FileHash-SHA1", "id": 1674454, "観察": 1}], "TLP": "緑", "公開": true, "相手": "", "targeted_countries": [ ],"産業":[]}]"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":""," 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": [ ],"産業":[]}]"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":""," 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

おすすめ記事