Awk

awk 還是 grep?- 列印關鍵字和以下列

  • April 13, 2019

我做了一些基準測試,輸出是一個包含多個結果的單個文件,格式如下

[blaaa]
1st run

T/V   N  NB  P  Q   Time
==========================
2     3   4  1  2   1.02
[blaaaa...]
2nd run
T/V   N  NB  P  Q   Time
==========================
4     42 4  1  2    1.22

我只想獲得我所做的不同執行的執行時間。那麼是否可以grep“時間”並列印下一列但一列?甚至只列印出來

1.02
1.22

對於我上面的例子?我寧願只列印沒有 blaa 部分的三個結果列:D

假設Time總是在第六個欄位:

$ awk '$6 == "Time" {t = NR} t && NR == t+2 {print $6}' file
1.02
1.22

或者,您可以使用getline兩次 - quick’n’dirty:

awk '$6 == "Time" {getline; getline; print $6}' file

(“臟”,因為它不檢查getline返回值)。

$ grep -o 'Time\|[0-9\.]\+$' file
Time
1.02
Time
1.22
$ grep -o '[0-9\.]\+$' file
1.02
1.22
$ grep -A2 ^T/V file
T/V   N  NB  P  Q   Time
==========================
2     3   4  1  2   1.02
--
T/V   N  NB  P  Q   Time
==========================
4     42 4  1  2    1.22

結果--在最後一個 grep 中用 grep 分隔,可以使用以下命令刪除:

$ grep -A2 ^T/V file | grep -v '^--'

====刪除了這些行:

$ grep -A2 ^T/V file | grep -v '^--\|=\+'

引用自:https://unix.stackexchange.com/questions/512312