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

标签 linux bash sed awk

作为一个 Linux 新手,我从未(真正)使用过诸如 sedawk(或任何其他工具)之类的工具来解析文本。 我想从中提取

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/

相关文章:

c++ - 使用 pthreads 时的后台线程(不错,优先级)

linux - 想要使用 shell 脚本在两个文件中追加记录

linux - 在标题中搜索模式并打印整列

linux - 如何使用标准 Linux 工具将 `---` 分隔的 block 替换为文本文件的内容?

c - EOF 在文件末尾之前到达

java - 让我的演示 Java 库/框架在 Linux 上运行 30 天后停止工作的最佳策略是什么?

java - 如何在 Java 中使用查找命令

java - 通过 shell 脚本传递以空格分隔的系统属性不起作用

linux - 创建重复文件并重命名

regex - 如何将正则表达式作为参数传递给 Bash 脚本中的 Perl 单行代码?