使用 curl 调用数据,使用 grep 清理输出
using curl to call data, and grep to scrub output
我正在尝试为一系列 ID 调用 API,然后使用 curl 在 bash 脚本中利用这些 ID,以查询机器的一些信息,然后擦除在它输出之前只有 select 几件事的数据。
#!/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
这是一个 MapR 项目,我目前正在致力于从 API 中剥离一些字段。
在上面的示例中,我只关心 6 个字段,尽管来自 curl 命令的输出为我提供了大约 30 个字段及其值,其中许多是不相关的。
如果我在标准提示符下使用 curl 命令,我会得到我要查找的字段,但是当我将它添加到脚本时,我什么也得不到。
请删除后面的引号
$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+'" )"
我正在尝试为一系列 ID 调用 API,然后使用 curl 在 bash 脚本中利用这些 ID,以查询机器的一些信息,然后擦除在它输出之前只有 select 几件事的数据。
#!/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
这是一个 MapR 项目,我目前正在致力于从 API 中剥离一些字段。
在上面的示例中,我只关心 6 个字段,尽管来自 curl 命令的输出为我提供了大约 30 个字段及其值,其中许多是不相关的。
如果我在标准提示符下使用 curl 命令,我会得到我要查找的字段,但是当我将它添加到脚本时,我什么也得不到。
请删除后面的引号
$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+'" )"