我需要从文件中获取经过的时间输出。我需要“过去”之前的值,即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文件。如果您想将数据附加到文件末尾,只需使用>>
而不是>
.