【问题标题】:Shell script to pull variable file1 and compare against variable in file2 and print difference用于提取变量 file1 并与 file2 中的变量进行比较并打印差异的 Shell 脚本
【发布时间】:2014-05-26 05:01:49
【问题描述】:

我似乎无法理解这个......或者我已经过度分析这个......

目前,我有一个脚本,它每 15 分钟运行一次查询,输出到 tmp 文件,使用 awk 格式化输出,然后通过电子邮件发送结果并存储日志文件。

tmp 文件样本数据为 ...

2014040800054265 D 08-Apr-2014 11:15 08-Apr-2014 00:00 OOS  
2014040800054267 E 08-Apr-2014 11:16 08-Apr-2014 00:00 OOS  
2014040800054279 D 08-Apr-2014 15:01 08-Apr-2014 00:00 OOS  

电子邮件文件示例数据是...

Ticket #: 2014040800054265
Queue : D
Recieved Date : 08-Apr-2014
Recieved Time : 11:15

基本上,我希望脚本只通过电子邮件发送新票...

我曾尝试与 awk 进行比较,但没有奏效。

有人有什么建议吗?

感谢您的帮助!

P.S 对不起假冒的 cmets ...仍然习惯这个网站:)

【问题讨论】:

  • 能否提供两个文件的样本?
  • 感谢您的回复!第一列是票号
  • 2014040800054265 D 2014 年 4 月 8 日 11:15 2014 年 4 月 8 日 00:00 OOS 2014040800054267 E 2014 年 4 月 8 日 11:16 2014 年 4 月 8 日 00:00 00:00 OOS 279 年 4 月2014 年 4 月 15:01 2014 年 4 月 8 日 00:00 OOS
  • @naab 2014040800054265 D 2014 年 4 月 8 日 11:15 2014 年 4 月 8 日 00:00 OOS 2014040800054267 E 2014 年 4 月 8 日 11:16 2014 年 4 月 8 日 00:80 OOS 2014 年 4 月 8 日 15:01 2014 年 4 月 8 日 00:00 OOS
  • 问题中似乎有很多与问题无关的信息,而问题中缺少必要的信息。如果我理解的话,您只是想比较 2 个文件中的某些特定字段,对吗?然后只需发布 2 个输入文件的样本以及预期的输出。摆脱所有关于如何创建这些输入文件的前导,因为它只会分散注意力,并且会导致人们不会费心费力地试图理解你想要的东西。

标签: bash shell awk


【解决方案1】:

可能是这样的。

它解析日志文件以仅提取票号。

然后遍历它们并尝试 grep 来查找是否已发送。

LOGFILE="file1"
TMPFILE="file2"

for TICKET in $(awk '{print $1}' $LOGFILE); do
   if ! grep -q "Ticket #: ${TICKET} " $TMPFILE; then
      send_email_for_ticket $TICKET
   fi
done

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-10
    • 2016-02-20
    • 2013-12-14
    • 1970-01-01
    • 2020-08-01
    • 2020-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多