我被這個活動困住了,我有一個如下所示的 txt 檔案
0112 00000 34 JOB RECOVERY (ORDERID 2N000, RUNNO 0001) ACCEPTED, OWNER
0112 00000 35 JOB RECOVERY (ORDERID 2N000, RUNNO 0001)STARTED , APPL TYPE
0112 00000 36 JOB PROCESS (ORDERID 2N001, RUNNO 0001) ACCEPTED , OWNER
0112 00001 37 JOB PROCESS (ORDERID 2N001, RUNNO 0001) STARTED, APPL_TYPE
0112 00001 38 JOB RECOVERY (ORDERID 2N000, RUNNO 0001) ENDED OK ,ELAPSED - 0.02 SEC
0112 00003 39 JOB PROCESS (ORDERID 2N001, RUNNO 0001) ENDED OK, ELAPSED - 2.28 SEC
我需要為每個作業的每個 orderid 獲取經過的值,如果 orderid 是 2N000,我需要,那么經過的我應該得到 - 0.02 秒。像這樣對于我需要使用 shell 腳本從檔案中獲取的每個 orderid。
我需要像這樣的輸出
orderid jobname ELAPSED
2N000 RECOVERY 0.02
2NOO1 PROCESS 2.28
uj5u.com熱心網友回復:
它并不完美,但它是一個開始:
grep -i "elapse" test.txt | awk -F " " '{print $7 " " $5 " " $14}'
uj5u.com熱心網友回復:
grep ELAPSED file.txt \
| cut -d' ' -f7,5,14 \
| sed -E 's/(.*) ([^[:space:]] ),/\2 \1/'
grep只選擇帶有“ELAPSED”的行;cut僅提取帶有 orderid、jobname 和經過時間的列;- 但是它們的順序錯誤,因此
sed從 orderid 中洗掉逗號并重新排序列。
如果sed不可用,您可以使用awk:
awk '/ELAPSED/{id=$7; sub(",", "", id); print id, $5, $14}' file.txt
- 在包含 的行中
ELAPSED,第七個值存盤在 中id,逗號被洗掉,id并且列印了 、作業名和經過的時間。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/410222.html
標籤:
