如何在Linux中使用grep找出一行中的单词?

时间:2018-08-31 03:17:35

标签: linux bash sed grep

假设我有一个字符串“在244.434秒(28.4151 KB /秒)中传输了6.7828 MB”。我想得到244.434秒,这只是一个示例,这些值可以更改。基本上,我需要知道花费的时间(以秒为单位)。我正在Linux中实现它。如何通过grep进行操作?

此输入将来自日志文件abc.log。

3 个答案:

答案 0 :(得分:2)

如果您可以确定输出的顺序,那么

sigma^2

输出

echo "Transferred 6.7828 MB in 244.434 seconds (28.4151 KB/sec)" | cut -d' ' -f5

在列表中,比sed更容易。

答案 1 :(得分:1)

您可以尝试使用此grep

$ grep -oE "[0-9\.]* seconds" file
244.434 seconds

其中file

Transferred 6.7828 MB in 244.434 seconds (28.4151 KB/sec)

编辑 (由@Cyrus建议)

假设您只需要秒数:

$ grep -oP "[0-9.]+(?= seconds)" file
244.434

答案 2 :(得分:0)

为此,您需要grep和sed:

grep "Transferred .* in .* seconds" abc.log | sed -e 's/^.*Transferred .* in \([0-9][0-9]*[.][0-9][0-9]*\) seconds .*/\1/'

输出:

244.434