2011-03-31 108 views
0

我有sql腳本:AWK打印幫助cshell腳本

SPOOL &1 

Select to_char(min(calen_dt),'mm-dd-YY') FD, 
     to_char(max(calen_dt),'mm-dd-YY') LD 
from put_calen 
where calen_dt >= trunc(sysdate,'mm') - interval '1' month 
and calen_dt <= trunc(sysdate,'mm') - interval '1' day 
and business_day_ind = 'Y'; 

SPOOL OFF 

轉儲它輸出到get.tmp

我的問題是我怎麼能在我的cshell腳本中設置的最小和最大日期,所以我可以使用日期..我這樣做,是這樣..它沒有工作..什麼我需要在這裏更改

sqlplus $ORA_UID/$ORA_PSWD @${SQL}example.sql ${TMP}get.tmp 
set first_date=`cat ${TMP}/get_date.tmp | awk -F '{print $1}'` 
echo 'First Date: '${first_date} 
set last_date=`cat ${TMP}/get_date.tmp | awk -F '{print $2}'` 
echo 'Last Date: '${last_date} 
+0

能否請您把您輸入的樣子和至少一個樣本行的自由您想從中檢索的值。這對你得到你正在尋找的答案非常有幫助。 – SiegeX 2011-03-31 19:36:45

+0

plz ..有人可以幫我..我真的需要解決這個問題..但不知道它是如何工作在分隔符文件 – jack 2011-03-31 20:22:05

+0

對不起,根據SiegeX評論,仍然不清楚get_date.tmp中的數據是什麼樣子。否則,我們只是猜測。此外,還不清楚; ...您是否使用發佈的SQL代碼作爲您想要修復的進程的一部分,或者您是否向我們展示SQL代碼,因爲它具有需要在csh中重新創建的日期計算,或者您試圖解析get_date.tmp中的輸出?每週都有一個關於如何在shell中進行日期計算的問題。只要搜索一下。或者更改你的帖子以顯示1.之前,2.之後,3.爲什麼它是錯誤的。 4你在做什麼,請;-)!祝你好運。 – shellter 2011-04-04 21:58:01

回答

1

如果沒有特別需要的awk其他一些原因,我建議使用,而不是削減:

set f1=grep G1 ${TMP}/get.tmp | cut -d= -f2 

我還拿了除去最主要的「貓」,因爲grep的可能,以及命令行取文件

+0

在任何shell中,都需要使用命令替換爲var賦值,即設置f1 = \ grep ...。根據OP的csh要求,反引號是必需的。 – shellter 2011-04-04 21:51:05