![将字符串后的curl输出捕获到文件中](https://linux22.com/image/93404/%E5%B0%86%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%90%8E%E7%9A%84curl%E8%BE%93%E5%87%BA%E6%8D%95%E8%8E%B7%E5%88%B0%E6%96%87%E4%BB%B6%E4%B8%AD.png)
我想将字符串“director-services”之后的所有内容从 bash 脚本输出到文件中。
$ curl localhost:9201/_cat/health
1472487809 12:23:29 director-services green 3 3 828 276 0 0 0 0
答案1
使用grep
和的组合cut
,
$ curl ... | grep -o "director-services.*" | cut -d' ' -f2-
green 3 3 828 276 0 0 0 0
或者简单地使用perl
,
$ curl ... | perl -lne 'print $1 if /director-services (.*)/'
green 3 3 828 276 0 0 0 0
答案2
假设您正在使用 ElasticSearch 和_cat
API 来查询集群参数。
您不需要任何外部处理工具,_cat
API 具有标头匹配功能,在使用查询时可以匹配元字符?h=
。
由于您需要从列标题开始获取所有内容node.total
,因此可以使用:
_cat/health?h=node.total,*
例子:
% curl 'localhost:9200/_cat/health'
1472532922 00:55:22 foobar red 1 1 3279 3279 0 0 3190 0 - 50.7%
% curl 'localhost:9200/_cat/health?v'
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1472532925 00:55:25 foobar red 1 1 3279 3279 0 0 3190 0 - 50.7%
% curl 'localhost:9200/_cat/health?h=node.total,*'
1 1472532942 00:55:42 foobar red 1 3279 3279 0 0 3190 0 - 50.7%