从文件中获取经过的时间值

从文件中获取经过的时间值

我需要从文件中获取经过的时间输出。我需要“过去”之前的值,即2:10:42.

文件内容:

312.90user 15.57system 2:10:42elapsed 4%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (1major+152440minor)pagefaults 0swaps

答案1

使用 Perl 相对容易:

perl -n -E '/([0-9:]+)elapsed/ and say $1' «FILE»

请注意,只是在“elapsed”一词之前查找类似时间的内容(不带任何空格)。如果应用于其他文件,可能会出现误报。此外,它还会检查文件中的每一行(并打印找到的任何经过时间),而不仅仅是第一行。

答案2

在包含“(time)elapsed”的行中,搜索“(anything) (space) (time)elapsed(anything)”并将所有内容替换为“(time)”,然后打印结果行:

sed -n '/[0-9:]*elapsed/ { s/.* \([0-9:]*\)elapsed.*/\1/;p }' input > output

答案3

只需这样做:

假设您的数据位于名为文件你可以这样做:

$ head -1 file | awk '{ print $3 }' | sed 's/elapsed//'

它会返回:2:10:42


分解一下:

使用以下命令获取文件的第一行:

head -1 file

繁重的工作是由awk

awk '{ print $3 }'

它只打印第三个数据块2:10:42elapsed

然后使用sed字符串编辑器来整理:

sed 's/elapsed//'

您可以将输出重定向到任何您喜欢的位置,例如,只需添加:

> output.text

输出2:10:42到名为的文件输出.txt

上述内容将破坏(替换)中的任何内容输出.txt文件。如果您想将数据附加到文件末尾,只需使用>>而不是>.

相关内容