我应该使用哪个工具从字符串中提取数据?

Man*_*lva 2 linux bash awk sed

作为一个非常新的Linux用户,我从来没有(真的)使用诸如sedawk/或其他任何工具来解析文本.我想从中提取

速度:1624.127424 Kib/s,9.410000秒

第二个时间值,就在seconds单词之前,

我应该考虑哪个工具?

Lev*_*von 6

您可以使用许多工具,但awk会很好:

echo "Speed : 1624.127424 Kib/s in 9.410000 seconds" | awk '{print $6}'
Run Code Online (Sandbox Code Playgroud)

或(如果您的数据在文件中):

awk '{print $6}' data.txt
Run Code Online (Sandbox Code Playgroud)

给你

9.410000
Run Code Online (Sandbox Code Playgroud)

说明:

这假定您感兴趣的值在线上的相对位置将保持不变(在这种情况下是第6个白色空格分隔字段),相应地进行调整.

awk将输入行拆分为基于空白的字段.您感兴趣的字段是第6个字段,因此您要打印它$6.

或者,您也可以用来awk '{print $(NF-1)}'打印行上的倒数第二个字段(NF是一个知道给定行上字段数的awk变量).这提供了更多的灵活性,因为它可以使用长度线(即字段数),只要您感兴趣的字段是倒数第二个).

-

cut 将是另一种工作方式:

echo "Speed : 1624.127424 Kib/s in 9.410000 seconds" | cut -d' ' -f 6
Run Code Online (Sandbox Code Playgroud)

在这种情况下,线条基于空间的分隔符(由指定-d)进行分割,并且我们再次感兴趣的是第6个字段(-f 6).

还有其他方法,但这两个看起来很直接,首先浮现在脑海中.