作为一个 Linux 新手,我从未(真正)使用过诸如 sed
和 awk
(或任何其他工具)之类的工具来解析文本。
我想从中提取
Speed : 1624.127424 Kib/s in 9.410000 seconds
以秒为单位的时间值,就在 seconds
单词之前,
为此我应该研究哪个工具?
最佳答案
您可以使用许多工具,但是 awk
会做的很好:
echo "Speed : 1624.127424 Kib/s in 9.410000 seconds" | awk '{print $6}'
或(如果您的数据在文件中):
awk '{print $6}' data.txt
给你
9.410000
解释:
这假设您感兴趣的值在该行上的相对位置将保持不变(在本例中为第 6 个空白分隔字段),相应地进行调整。
awk
根据空格将输入行拆分为多个字段。您感兴趣的字段是第 6 个字段,因此您使用 $6
打印它。
或者,您也可以使用 awk '{print $(NF-1)}'
打印行中的倒数第二个字段 (NF
是一个 awk 变量,它知道给定行上的字段数)。这提供了更多的灵 active ,因为只要您感兴趣的字段是倒数第二个,它就可以使用长度线(即字段数)。
--
cut
将是另一种也可以使用的工具:
echo "Speed : 1624.127424 Kib/s in 9.410000 seconds" | cut -d' ' -f 6
在这种情况下,根据空格分隔符(由 -d
指定)拆分行,同样,我们对第 6 个字段感兴趣(-f 6
).
还有其他方法,但这两个似乎很简单,首先想到。
关于linux - 我应该使用哪个工具从字符串中提取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12342451/