我有一个字符串,其中包含命令的输出,如下所示:
max. bit rate: ('2.5 MBit/s', '16.7 MBit/s')
现在我需要在两个单独的字符串中分别提取“ 2.5 MBit / s”和“ 16.7 MBit / s”。
这语言是bash。
答案 0 :(得分:2)
with awk:
string1=$(echo "max. bit rate: ('2.5 MBit/s', '16.7 MBit/s')" | awk -F"'" '{print $2}')
string2=$(echo "max. bit rate: ('2.5 MBit/s', '16.7 MBit/s')" | awk -F"'" '{print $4}')
切边:
string1=$(echo "max. bit rate: ('2.5 MBit/s', '16.7 MBit/s')" | cut -d"'" -f2)
string2=$(echo "max. bit rate: ('2.5 MBit/s', '16.7 MBit/s')" | cut -d"'" -f4)
无论哪种方式,我们都只是将字符串用单引号引起来,并抓住第二和第四字段。
答案 1 :(得分:2)
在bash
中类似,而无需启动任何外部程序:
yourString="max. bit rate: ('2.5 MBit/s', '16.7 MBit/s')"
IFS="'" read _ rate1 _ rate2 _ <<< "$yourString"
echo $rate1
2.5 MBit/s
echo $rate2
16.7 MBit/s
我将IFS(输入字段分隔符)设置为单引号,然后使用不需要的字段将read
放入称为_
的虚拟(未使用)变量中。
答案 2 :(得分:1)
使用正则表达式:
x="max. bit rate: ('2.5 MBit/s', '16.7 MBit/s')"
[[ $x =~ .*\'(.*)\'.*\'(.*)\'.* ]] && echo "${BASH_REMATCH[1]} ${BASH_REMATCH[2]}"
输出:
2.5 MBit/s 16.7 MBit/s