一个仿真程序,跑完生成一个约 20M 的 log 文件,想从里面找到特定格式的一行内容
Class = C
Size = 162x 162x 162
Iterations = 200
Time in seconds = 23.68
Total processes = 900
Compiled procs = 900
Mop/s total = 121032.40
Mop/s/process = 134.48
这段 log 里想获取**Time in seconds = **后面空格以后到结尾换行符之间的内容,正常情况下是一个小数(小数部分 0-5 位不定),但是如果仿真超时了这里会是一些未知文字(没超时过所以不知道是什么)。感觉用 grep 就直接能弄出来,但无奈是不会……
1
kamal 2019-10-11 14:11:48 +08:00 1
|
4
gIrl1990 2019-10-11 18:12:15 +08:00
https://blog.csdn.net/u012047933/article/details/38365541
https://perldoc.perl.org/5.30.0/perlre.html#Lookaround-Assertions pcre2 pcre http://www.pcre.org/ 你的要求: 空格以后到结尾换行符之间的内容, 所以用 断言 因为: lookbehind assertion is fixed length 所以没法直接提取后面的内容 我这里用 xargs 来 trim 内容 ```bash pcre2grep -o "(?<=^Time in seconds = ).+" test.txt | xargs -n 1 echo ` |
5
gIrl1990 2019-10-11 18:20:01 +08:00
用 xargs 不太好,会略过空白输出,比如
```text Time in seconds = 23.68 Time in seconds = end Time in seconds = (end,没有括号内字符) ``` ```bash pcre2grep -o "(?<=^Time in seconds =).+" test.txt ``` |
8
param 2019-10-12 21:03:38 +08:00 via Android
v2 有没有有偿求助专区?
|