使用curl调用数据,使用grep来擦除输出

时间:2015-12-02 20:53:59

标签: bash curl mapr

我正在尝试为一系列ID调用API,然后在使用curl的bash脚本中利用这些ID来查询计算机中的某些信息,然后清除数据在输出之前只选择一些东西。

#!/bin/bash
url="http://<myserver:myport>/ws/v1/history/mapreduce/jobs"
for a in $(cat jobs.txt); do
    content="$(curl "$url/$a/counters" "| grep -oP '(FILE_BYTES_READ[^:]+:\d+)|FILE_BYTES_WRITTEN[^:]+:\d+|GC_TIME_MILLIS[^:]+:\d+|CPU_MILLISECONDS[^:]+:\d+|PHYSICAL_MEMORY_BYTES[^:]+:\d+|COMMITTED_HEAP_BYTES[^:]+:\d+'" )"
    echo "$content" >> output.txt
done

这是我目前正致力于从API中剥离一些字段的MapR项目。

在上面的例子中,我只关心6个字段,虽然来自curl命令的输出给了我大约30个字段及其值,其中许多是无关紧要的。

如果我在标准提示符中使用curl命令,我会得到我要查找的字段,但是当我将它添加到脚本中时,我什么也得不到。

1 个答案:

答案 0 :(得分:0)

之后请删除引号 $url/$a/counters" "。如下:

content="$(curl "$url/$a/counters | grep -oP '(FILE_BYTES_READ[^:]+:\d+)|FILE_BYTES_WRITTEN[^:]+:\d+|GC_TIME_MILLIS[^:]+:\d+|CPU_MILLISECONDS[^:]+:\d+|PHYSICAL_MEMORY_BYTES[^:]+:\d+|COMMITTED_HEAP_BYTES[^:]+:\d+'" )"