假设我有一个字符串“在244.434秒(28.4151 KB /秒)中传输了6.7828 MB”。我想得到244.434秒,这只是一个示例,这些值可以更改。基本上,我需要知道花费的时间(以秒为单位)。我正在Linux中实现它。如何通过grep进行操作?
此输入将来自日志文件abc.log。
答案 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