如何使用模式在字符串变量中查找子字符串?

时间:2018-03-18 17:38:20

标签: regex bash sed grep sh

我有变量包含这样的字符串:

zvq:0.001:0.006 hqp:0.006:0.01 pgvqa:0.1:0.01

我想找到并回应

zvq:0.001:0.006

hqp:0.006:0.01

pgvqa:0.1:0.01

使用zvqpgvqahqp模式,我该怎么做?

2 个答案:

答案 0 :(得分:1)

试试这个:

var='zvq:0.001:0.006 hqp:0.006:0.01 pgvqa:0.1:0.01'

然后

$ grep -Eo 'zvq[^ ]+' <<< "$var"
zvq:0.001:0.006

$ grep -Eo 'pgvqa[^ ]+' <<< "$var"
pgvqa:0.1:0.01

$ grep -Eo 'hqp[^ ]+' <<< "$var"
hqp:0.006:0.01

如果您只是想根据空间剪切字符串,就像@janos在评论中所说:

echo "${var%% *}"

使用bash parameter expansion

答案 1 :(得分:0)

 echo $variable | tr ' ' '\n' | grep $pattern

echo $variable | tr ' ' '\n' | grep "^${pattern}:"

示例:

 variable="zvq:0.001:0.006 hqp:0.006:0.01 pgvqa:0.1:0.01"
 pattern="zvq"

 echo $variable | tr ' ' '\n' | grep $pattern
 zvq:0.001:0.006