如何使用" sed"找出匹配的变量?

时间:2014-09-25 06:47:14

标签: bash sed

我的字符串是MSE: 16.80 (MSE is lower) [15 16.3 18.8 11]。使用sed我只想选择16.80 (MSE is lower),即我想在“:”和“[”之间选择变量。我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:2)

下面的sed脚本应该可以工作:

echo "MSE: 16.80 (MSE is lower) [15 16.3 18.8 11]" | sed 's/.*: \(.*\)\[.*/\1/'

它复制区域:和[并打印相同的。

答案 1 :(得分:1)

如果你的grep支持P - Perl-regexp )参数,那么你可以使用下面的grep命令来解析:和{{之间的文本。 1}}符号。

[

示例:

grep -oP ':\s*\K.*?(?=\s*\[)'

答案 2 :(得分:1)

另一种方法是在awk中使用自定义字段分隔符:

awk -F'[:[] *' '{print $2}'

这会将字段分隔符设置为":"或" ["后跟任意数量的空格并打印第二个字段。

使用您的输入进行测试:

$ awk -F'[:[] *' '{print $2}' <<<"MSE: 16.80 (MSE is lower) [15 16.3 18.8 11]."
16.80 (MSE is lower)