提取子字符串重击

时间:2019-01-29 08:07:05

标签: regex bash

我有这个字符串:

4017de9511f7    workflow-engine-ms    0.12%     4.609MiB / 7.574GiB  0.06%         29MB / 15.8MB     4.1kB / 0B          13

我必须提取数字4.609,如何在bash中提取数字? 谢谢!

3 个答案:

答案 0 :(得分:1)

使用<div id = "hello" > <aside class="item"> <a href="abc"><img src="abc" title="abc" /></a> </aside> <aside class="item"> <a href="abc2"><img src="abc2" title="abc2" /></a> </aside> <aside class="item"> <a href="abc1"><img src="abc1" title="abc1" /></a> </aside> </div > awk的简单方法是:

sprintf

使用awk '{val=sprintf ("%g",$4); print val}' file 4.609 转换说明符,只需转换第4字段的"%g"部分,而忽略MiB字符。

答案 1 :(得分:0)

如果格式不变,则可以使用sed -e 's# *# #g' | cut -d\ -f4 | cut -dM -f1提取值。

sed将随后的空格连接成一个空格,第一个剪切提取4.609MiB字段,第二个空格提取MiB。

答案 2 :(得分:0)

如果用“我有这个字符串”来表示,您将其保存在某个文件中,并且需要抢先匹配X.XXX Mib(或GiB或kB),则可以这样解决:

echo "4017de9511f7    workflow-engine-ms    0.12%     4.609MiB / 7.574GiB  0.06%         29MB / 15.8MB     4.1kB / 0B          13" > test 

准备测试文件,

grep -Po "[0-9\.]+(?=(Mi|Gi|k))" test | head -1

找到匹配的字符串