2015-06-29 77 views
0

得到具體的值我有一個curl命令,如果我運行它,如下輸出,捲曲從輸出

{ 
    "page" : 1, 
    "records" : 1, 
    "total" : 1, 
    "rows" : [ { 
    "automated" : true, 
    "collectionProtocol" : "MagBead Standard Seq v2", 
    "comments" : "", 
    "copy" : false, 
    "createdBy" : "stest", 
    "custom1" : "User Defined Field 1=", 
    "custom2" : "User Defined Field 2=", 
    "custom3" : "User Defined Field 3=", 
    "custom4" : "User Defined Field 4=", 
    "custom5" : "User Defined Field 5=", 
    "custom6" : "User Defined Field 6=", 
    "description" : null, 
    "editable" : false, 
    "expanded" : false, 
    "groupName" : "99111", 
    "groupNames" : [ "all" ], 
    "inputCount" : 1, 
    "instrumentId" : 1, 
    "instrumentName" : "42223", 
    "jobId" : 11111, 
    "jobStatus" : "In Progress", 
    "leaf" : true, 
    "modifiedBy" : null, 
    "name" : "Copy_of_Test_Running2" 
    } ] 
} 

我想只提取jobId`s值。 這一產量將

11111 

如果有多個行,然後,有多次的jobId

11111 
    11112 
    11113 

我想只提取和的jobId過程中while循環。 like below,

while read job; do 
echo $job 
done < < (curl command) 

我想在另一個命令中使用該作業ID。 捲曲結果可能是多個。

你有沒有想法容易地提取捲曲輸出,並使一段時間或循環?

+3

使用JQ:http://stedolan.github.io/jq/ – Mircea

+0

是什麼格式,如果有多個行? – Will

+0

@Mircea謝謝jq太棒了 –

回答

1

我認爲jq(感謝@Mircea)是一個不錯的解決方案。

此外,只有當捲曲的輸出格式是紀律性的並且沒有任何髒符號時,我才能提供簡單的awk解決方案。

所以,只要小心使用此:

while IFS= read -r line 
do 
    echo $line|awk -F':' '/jobId/{split($2,a,",");for(i in a){if(a[i]){printf("%d\n",a[i])}}}' 
done < "$file" 
+0

謝謝我認爲jq很棒我不需要製作awk –