我需要去掉文本和空格'localhost',并将剩下的内容放入变量中。我真的不清楚如何用sed
解析字符串,然后将结果解析为变量——如果有任何帮助,将不胜感激
示例:
输入变量:'localhost CPU'
输出变量:'CPU'
试试这个:
a="localhost CPU"
b="${a#* }"
echo "$b"
输出:
CPU
有很多方法可以实现这一点:
使用Bash参数扩展:
a="localhost CPU"
b="${a/localhost /}"
echo "$b"
使用cut
:
b="$(echo "$a" |cut -d" " -f2)"
使用tr
:
b="$(echo "$a" |tr -d "localhost ")"
使用grep
(带有perl-regex):
b="$(echo "$a" |grep -oP "(?<=localhost ).*")"
我通常按以下方式执行:首先,我回显变量的内容,并将其通过管道发送到sed,然后sed搜索"localhost"并将其替换为空。然后,所有内容的输出都存储在一个名为output
的变量中。
a="localhost CPU"
output=`echo $a | sed -e "s/localhost //g`
strppedLocal=$(echo "$dataItems" | sed 's/[^ ]* //')
其中$dataItems
包含'localhost CPU'