从字符串sed中删除一个单词



我需要去掉文本和空格'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'

最新更新