繁体   English   中英

如何在Shell脚本中使用正则表达式从URL中提取字符串字段值?

[英]How to extract string field value from a URL using regular expression in shell script?

我正在一个项目中,需要从bash shell脚本对我的服务器之一进行url调用。

http://hostname.domain.com:8080/beat

点击上面的URL后,我将得到下面的响应,我需要解析它并从中提取state

num_retries_allowed: 3 count: 30 count_behind: 100 state: POST_INIT num_rounds: 60 hour_col: 2 day_col: 0

现在,我想使用正则表达式提取state变量值。 我能够从中提取countcount_behind值,但不确定如何从中提取state值。

#send the request, put response in variable
DATA=$(wget -O - -q -t 1 http://hostname.domain.com:8080/beat)

#grep $DATA for count and count_behind
COUNT=$(echo $DATA | grep -oE 'count: [0-9]+' | awk '{print $2}')
COUNT_BEHIND=$(echo $DATA | grep -oE 'count_behind: [0-9]+' | awk '{print $2}')

# how to extract state variable value here?
STATE= what do I add here?

另外如果在$DATA如果state变量不存在,那么我想将0赋给STATE变量。 之后,我想验证条件并根据该条件退出脚本。

如果STATE等于POST_INIT则退出shell脚本成功,或者STATE等于0,然后也成功退出。

#verify conditionals
if [[ $STATE -eq "POST_INIT" || $STATE -eq "0" ]]; then exit 0; fi

您可以使用此grep -P

state=$(grep -oP 'state: \K\S+' <<< "$DATA")   
[[ -z "$state" ]] && state=0
echo "$state"
POST_INIT

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM