如果我运行它,我有一个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的值。 此输出将
11111
如果有多行,则有多个jobId
11111
11112
11113
我想在while循环中仅提取jobId和process。 如下,
while read job; do
echo $job
done < < (curl command)
我希望在另一个命令中使用该作业ID。 卷曲的结果可能是多重的。
您是否有想法轻松提取卷曲输出并进行一段时间或循环?
答案 0 :(得分:1)
我认为words[i]
(感谢@Mircea)是一个很好的解决方案。
此外,只有当curl的输出格式是纪律性的并且没有任何脏符号时,我才能提供简单的public String nthShortWord(String[] words, int n)
{
int nthShortWord = 0;
for (int i = 0; i < words.length; i++)
{
if (words[i].length()<=3) nthShortWord++;
if (nthShortWord==n) return words[i];
}
return "";
}
解决方案。
所以,请小心使用它:
jq