2015-03-24 24 views
0

使用我們的新API我試圖從API調用的結果中提取幾行並將這些結果放入bash數組中。任何人都可以幫助我請這個。這是API輸出的示例:使用bash將API數據放入bash數組中

{ 
    "id": "1l2k3j", 
    "createDate": "2015-03-06T03:40:29.000Z", 
    "accountId": "12345", 
    "url": "www.google.com", 
    }, 
    { 
    "id": "z0x99c", 
    "createDate": "2015-03-06T03:43:04.000Z", 
    "accountId": "12345", 
    "url": "www.yahoo.com", 
    }, 

我需要將ids(例如:z0x99c)放入bash數組中。

+0

嘗試在這裏搜索'jsawk'的答案。祝你好運。 – shellter 2015-03-24 21:51:54

回答

2
array=($(tr -d '",' < file | awk '/id:/ {print $2}')) 

或GNU sed的:

array=($(sed -n 's/.*"id": "\(.*\)".*/\1/p' file)) 

或GNU的grep:

array=($(grep -oP 'id": "\K[^"]*' file)) 

echo ${array[@]} 

輸出:

 
1l2k3j z0x99c 
+0

我本來希望將它導出到一個文件,但這個工作。謝謝 – Atomiklan 2015-03-24 22:12:40

+0

用'<(your_command_writing_to_stdout)'替換'file'。 – Cyrus 2015-03-24 22:26:39

0

取決於你如何獲得這個輸出,

array=($(curl http://api.example.com/boink | jq -r '.id')) 
+0

這可能工作!我做的事情非常相似。我把它變成一個Python解析器,使它更具人類可讀性,但我想這在這種情況下不再需要。 – Atomiklan 2015-03-24 21:56:23

+0

jq:找不到命令 – Atomiklan 2015-03-24 21:57:09

+0

這不是標準實用程序,但它是廣泛可用的。如果您沒有爲您的平臺打包它,那麼從http://stedolan.github.io/jq/下載並安裝它非常簡單。 – tripleee 2015-03-24 21:58:10