我正在尝试为一系列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命令,我会得到我要查找的字段,但是当我将它添加到脚本中时,我什么也得不到。
答案 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+'" )"