Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Grep不带循环的变量中的多个子字符串_Regex_Bash_Sed_Grep - Fatal编程技术网

Regex Grep不带循环的变量中的多个子字符串

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=

鉴于提供的参数,我正在编写一个脚本,该脚本将解析UPS(不间断电源)的web接口以获取数据。我将整个脚本正确编码,以适应一个参数

我想要完成的是输入一个由“+”符号分隔的参数字符串,例如主机名+模型+状态+正常运行时间,然后在不使用循环的情况下对每个参数进行grep。这是否可行

参数通过使用位置参数$1分配给$\u var。就像我说的,我已经设置好了一个参数来正常工作。我只想修改多个参数的脚本

#!/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:是的,这个问题确实解决了。