2017-04-03 46 views
0

我有了文本(文件名列表),這是該格式的日誌文件:得到有日線比較給定日期

/dir1/dir2/dir3/dir4/dir5/dir6/dir7/us.ca.sf.release123.20170401164500025 
/dir1/dir2/dir3/dir4/dir5/dir6/dir7/us.ca.sf.release123.20170401170000022 
/dir1/dir2/dir3/dir4/dir5/dir6/dir7/us.ca.sf.release123.20170401171500018 
/dir1/dir2/dir3/dir4/dir5/dir6/dir7/us.ca.sf.release123.20170401173000018 

如今,在KSH腳本,我試圖用行檢索兩個列表 - 一個有日期的舊日期和其他具有給定日期的NEWER日期的列表:20170401 17:12

將前兩行放入一個older_list並將最後兩行放入newer_list: like, old_list文件有這些:

/dir1/dir2/dir3/dir4/dir5/dir6/dir7/us.ca.sf.release123.20170401164500025 
/dir1/dir2/dir3/dir4/dir5/dir6/dir7/us.ca.sf.release123.20170401170000022 

newer_list文件有這些:

/dir1/dir2/dir3/dir4/dir5/dir6/dir7/us.ca.sf.release123.20170401171500018 
/dir1/dir2/dir3/dir4/dir5/dir6/dir7/us.ca.sf.release123.20170401173000018 

可你們,請把我一個可以處理該腳本。 我們是一個老版本 oslevel 5.3.0.0

感謝

回答

0

你可以爲了使用例如awk工具來實現你的任務:

例子:

> TIME=201704011700 # for same matter you could set it with current date TIME=$(date %Y%m%d%H%M) 
> awk -F'\.' -v time=$TIME '{if (substr($5,1,12) >= time) {print $0 }}' your_input_log_file > fitered_after_$TIME 
> awk -F'\.' -v time=$TIME '{if (substr($5,1,12) < time) {print $0 }}' your_input_log_file > fitered_before_$TIME 

說明:

  1. TIME是在shell
  2. awk參數-F 將限定.作爲字段分隔符因而你的領域中定義的變量,我們 感興趣按您的例子是$5
  3. -v選項將 爲awk定義一個變量time在開始之前 您的TIME shell變量。
+0

嗨vadimbog,是的,完美的,這是我可以要求的簡單,但最完美的一/兩線解決方案,非常感謝所有的詳細解釋。 – Benny