Regex Grep不带循环的变量中的多个子字符串
鉴于提供的参数,我正在编写一个脚本,该脚本将解析UPS(不间断电源)的web接口以获取数据。我将整个脚本正确编码,以适应一个参数 我想要完成的是输入一个由“+”符号分隔的参数字符串,例如主机名+模型+状态+正常运行时间,然后在不使用循环的情况下对每个参数进行grep。这是否可行 参数通过使用位置参数$1分配给$\u var。就像我说的,我已经设置好了一个参数来正常工作。我只想修改多个参数的脚本Regex Grep不带循环的变量中的多个子字符串,regex,bash,sed,grep,Regex,Bash,Sed,Grep,鉴于提供的参数,我正在编写一个脚本,该脚本将解析UPS(不间断电源)的web接口以获取数据。我将整个脚本正确编码,以适应一个参数 我想要完成的是输入一个由“+”符号分隔的参数字符串,例如主机名+模型+状态+正常运行时间,然后在不使用循环的情况下对每个参数进行grep。这是否可行 参数通过使用位置参数$1分配给$\u var。就像我说的,我已经设置好了一个参数来正常工作。我只想修改多个参数的脚本 #!/bin/bash curl=/usr/bin/curl grep=/bin/grep sed=
#!/bin/bash
curl=/usr/bin/curl
grep=/bin/grep
sed=/bin/sed
site=<ommitted>
if [ ${#} -lt 1 ]
then
echo "usage: $0 <vars := name|\"name|name\">"
exit 1
fi
# required parameters
_vars=${1}
result="$(${curl} -s ${site} | ${sed} -e 's/1,142d//; s/<[^>]*>//g' | ${grep} -w -i -E ${_vars} | ${sed} 's/.*: //; s/^\([0-9.-]\+\) .*/\1/')"
echo "${result}"
#/bin/bash
curl=/usr/bin/curl
grep=/bin/grep
sed=/bin/sed
场地=
如果[${}-lt 1]
然后
echo“用法:$0”
出口1
fi
#所需参数
_vars=${1}
result=“$(${curl}-s${site}}}${sed}-e's/1142d//;s/]*>///g'${grep}-w-i-e${sed}s/*://;s/^\([0-9.-]\+\)./\1/”)
回显“${result}”
您可以将+
转换为|
并使用grep-E
:
vars='hostname+model+status+uptime'
... | grep -E "${vars//+/|}"
是的,这为我解决了问题。忽略以前的通知。非常感谢!谢谢你,恭喜你!你刚刚跨过20万大关:)谢谢@kums:是的,这个问题确实解决了。