2015-05-08 42 views
0

我有shell腳本(ksh),它通過Oracle表x中的SPOOL將文件寫入xxxx unix目錄。執行shell腳本時獲得不同的日期時間

表x的列有seq_no。該文件應該爲不同的seeq_no生成。

E.G.

table x data 

seq_no,a,b,c 
1,2,3,4 
1,5,6,7 
1,8,9,10 
2,1,2,3 
2,4,5,6 
2,7,8,9 

文件名=測試_ $ {} STAMP的.csv

在這種情況下,用不同的timstamp兩個文件應該得到生成的,因爲我們有表×2不同seq_no。

當腳本運行時STAMP = date +%Y%m%d%H%M%S變量將只保存一個值。所以我的第一個文件正在被秒寫。

請告訴我如何在shell腳本處於執行狀態時查找當前日期時間。

+0

那麼,什麼是你想要的輸出?日期從哪裏來?你是否期望腳本足夠慢,以至於它在運行時會發生一秒的變化? –

+2

在Oracle完成後,您可以使用seq_no分割輸出文件。也許你想通過在文件名中添加seq_no來使文件名獨一無二? –

回答

0

如果我正確地得到您的問題,您需要有單獨的文件,每個文件都只有特定序列號的記錄。

如果你可以改變的方式,那麼你可以嘗試如下的內容:

  1. 閥芯另一個文件,可以說seq_file,查詢不同的序列號。

    Content of seq_file: 
    1 
    2 
    3 
    5 
    
  2. 迭代上的seq_filegrep "^${seq},"各條線和輸出重定向到所需的文件,可能是你可以計算STAMP2變量在最終文件名稱中使用。

    while read seq 
    do 
        STAMP2=`date +%Y%m%d%H%M%S` 
        grep "^${seq}," test_${STAMP}.csv >> ${seq}_$STAMP2 
    done<seq_file 
    
+0

你可以跳過step1並運行這個'cat file | awk -F',''{print $ 1}'| sort -u> seq_file' –