2017-01-23 89 views
1

我正在尋找一種方式來獲得所經過的時間輸出始終包括天,此刻我不能看到遠在限定輸出格式,所以我期待在使用切割時,awk, sed或類似命令在輸出生成後執行此操作。轉換SLURM會計輸出

所以任何想法如何,我可以改變輸出,如:

JobID|Partition|User|State|Elapsed| 
902464|interactive-a|bob|COMPLETED|10-00:10:40 
968491|interactive-a|bob|COMPLETED|12:49:20 
970801|interactive-a|sam|COMPLETED|07:00:46 
912973|interactive-a|tom|COMPLETED|41-02:34:41 
971356|interactive-a|mat|COMPLETED|04:36:35 
971912|interactive-a|mat|COMPLETED|02:12:02 
972668|interactive-a|mat|COMPLETED|00:09:06 

成這種格式(最後一列已經0-添加需要的地方)

JobID|Partition|User|State|Elapsed| 
902464|interactive-a|bob|COMPLETED|10-00:10:40| 
968491|interactive-a|bob|COMPLETED|0-12:49:20| 
970801|interactive-a|sam|COMPLETED|0-07:00:46| 
912973|interactive-a|tom|COMPLETED|41-02:34:41| 
971356|interactive-a|mat|COMPLETED|0-04:36:35| 
971912|interactive-a|mat|COMPLETED|0-02:12:02| 
972668|interactive-a|mat|COMPLETED|0-00:09:06| 

感謝

回答

2
$ sed 's/|\([0-9:]\{1,\}\)$/|0-\1/' file 
JobID|Partition|User|State|Elapsed| 
902464|interactive-a|bob|COMPLETED|10-00:10:40 
968491|interactive-a|bob|COMPLETED|0-12:49:20 
970801|interactive-a|sam|COMPLETED|0-07:00:46 
912973|interactive-a|tom|COMPLETED|41-02:34:41 
971356|interactive-a|mat|COMPLETED|0-04:36:35 
971912|interactive-a|mat|COMPLETED|0-02:12:02 
972668|interactive-a|mat|COMPLETED|0-00:09:06 
0

在AWK:

$ awk -F\| '$5 ~ /-|E/ || ($5 = "0-" $5) && gsub(/ /,"|")' file 
  • -F\|設置FS|
  • $5 ~ /-|E/比賽和打印記錄與- OR E在第五場
  • ||邏輯OR,即。如果以前不匹配,則:
  • ($5 = "0-" $5)前插0-至第五場
  • && gsub(/ /,"|")並與|小號取代那些空間置換字段分隔符。如果使用-v OFS="|"
  • 以上可以去除:

    $ AWK -v OFS = \ | -F \ | '$ 5〜/ - | E/|| ($ 5 = 「0-」 $ 5)」文件

    $ AWK -v OFS = \ | -F \ | '$ 5〜/ - | E/|| ($ 5 =「0-」$ 5)'文件

+0

爲什麼'{}'後面的'$ awk'行在子彈之後工作? (隨時隨地玩吧)。 –

+0

@EdMorton那最後一顆子彈下方的'$ awk'起跑線上就不會變成'代碼line'用'{}'或四間距它。 –