我有shell脚本(ksh),它通过SPOOL从oracle table x将文件写入xxxx unix目录。
表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
文件名= test _ $ {STAMP} .csv
在这种情况下,应该生成两个具有不同timstamp的文件,因为我们在表x中有2个不同的seq_no。
当脚本运行时STAMP = date +%Y%m%d%H%M%S变量只能保存一个值。所以我的第一个文件被第二个文件重写。
请告诉我如何在shell脚本处于执行状态时找到当前日期时间。
答案 0 :(得分:0)
如果我正确地提出您的问题,您需要有单独的文件,每个文件只包含特定序列号的记录。
如果您可以更改方法,那么您可以尝试以下内容:
使用另一个文件假设seq_file
来查询不同的序列号。
Content of seq_file:
1
2
3
5
迭代seq_file
和grep "^${seq},"
的每一行并将输出重定向到所需文件,可能是您可以计算STAMP2变量以用于最终文件名。
while read seq
do
STAMP2=`date +%Y%m%d%H%M%S`
grep "^${seq}," test_${STAMP}.csv >> ${seq}_$STAMP2
done<seq_file