Bash 使用curl调用数据,使用grep清理输出

Bash 使用curl调用数据,使用grep清理输出,bash,curl,mapr,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_REA

我试图为一系列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
这是我目前正在进行的一个MapR项目,用于从API中剥离一些字段

在上面的示例中,我只关心6个字段,尽管curl命令的输出提供了大约30个字段及其值,其中许多字段与此无关


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

请删除后面的引号 $url/$a/计数器。例如:

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+'" )"

如果您将其粘贴到提示符中,并且它可以在不更改任何内容的情况下工作,但在脚本中无法工作,那么它几乎总是由于某种配置丢失而导致的。如果不知道有效载荷,则无法进行故障排除。感谢您的帮助!!我刚试过,但不幸的是,这也没用。这是新的内容字符串content=$curl$url/$a/counters | grep-oP'FILE_BYTES_READ[^::+]:\d+| FILE_BYTES_writed[^::::+]:\d+| CPU_MILLIS[^:::+:\d+|物理内存_BYTES[^::+:+];提交的|HEAP+\u字节[^:::::::\d+'我查看了几次,看起来不错。。。我错过什么了吗?