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