【问题标题】:awk printing help cshell scriptawk 打印帮助 cshell 脚本
【发布时间】:2011-04-01 05:15:14
【问题描述】:

我有 sql 脚本:

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}

【问题讨论】:

  • 能否请您至少提供一个示例行,说明您的输入内容以及您希望从中检索的值。这将非常有助于获得您正在寻找的答案。
  • plz.. 谁能帮帮我.. 我真的需要解决这个问题.. 但不知道它在分隔符文件中是如何工作的
  • 抱歉,根据 SiegeX 的评论,仍然不清楚 get_date.tmp 中的数据是什么样的。否则我们只是猜测。另外,目前还不清楚;...您是否使用作为您要修复的过程的一部分发布的 SQL 代码,或者您是否向我们展示了 SQL 代码,因为它具有您需要在 csh 中重新创建的日期计算,或者您是试图解析 get_date.tmp 中的输出?每周都有一个关于如何在 shell 中进行日期计算的问题。只是搜索那个。或 更改您的帖子以显示 1. 之前、2. 之后、3. 为什么它是错误的。 4 你在做什么,拜托;-)!祝你好运。

标签: shell awk


【解决方案1】:

如果您出于其他原因不需要 awk,我建议您使用 cut 代替:

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

我还冒昧地删除了前导“猫”,因为 grep 也可以从命令行获取文件

【讨论】:

  • 在任何 shell 中,您都需要命令替换来为 var 赋值,即设置 f1=`grep ...`。根据 OP 的 csh 要求,需要反引号。
猜你喜欢
  • 2011-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-14
  • 1970-01-01
  • 2017-12-05
  • 1970-01-01
相关资源
最近更新 更多