【发布时间】:2020-05-08 03:19:05
【问题描述】:
我正在运行一个 curl 命令(加上一个 grep),我想从输出中提取两个模式之间的所有内容。
这是 curl(和 grep)的示例输出:
Dload Upload Total Spent Left Speed
100 15848 0 15848 0 0 708k 0 --:--:-- --:--:-- --:--:-- 736k
</message><refDesc>PULL Task 8c4d1a50-3e05-4b58-8d1a-503e057b586d 4_Place_All_Users_In_Inactive</refDesc><refKey>8c4d1a50-3e05-4b58-8d1a-503e057b586d</refKey><status>SUCCESS</status></syncope21:exec><syncope21:exec xmlns:syncope21="http://syncope.apache.org/2.1"><end>2020-01-22T01:13:44.512Z</end><start>2020-01-22T01:13:44.506Z</start><jobType>TASK</jobType><key>40e64a39-47e7-4428-a64a-3947e7c4286b</key><message>Users [created/failures]: 0/0 [updated/failures]: 0/0 [deleted/failures]: 0/0 [no operation/ignored]: 0/0
我想提取 </message> 和 </start> 之间的所有内容,例如,从上面,我想要:
</message><refDesc>PULL Task 8c4d1a50-3e05-4b58-8d1a-503e057b586d 4_Place_All_Users_In_Inactive</refDesc><refKey>8c4d1a50-3e05-4b58-8d1a-503e057b586d</refKey><status>SUCCESS</status></syncope21:exec><syncope21:exec xmlns:syncope21="http://syncope.apache.org/2.1"><end>2020-01-22T01:13:44.512Z</end><start>2020-01-22T01:13:44.506Z</start>
我尝试了以下方法:
curl -X GET ...." | grep xxxxxxx | sed -n -e '/<\/message>/,/<\/start>/p'
但它似乎没有工作(它似乎是返回整个输出,而不是提取。
谁能告诉我该怎么做?
谢谢!
吉姆
【问题讨论】: