【发布时间】:2015-07-02 14:47:08
【问题描述】:
我已经完成了必要的 20 次搜索,但我找不到包含我正在尝试做的“忽略 null”部分的示例。在使用 bash 并具有 grep/awk/sed/perl 和其他常见嫌疑人的 Linux 系统上工作。作业的输出格式为:
Some Field I Dont Care About = Nothing Interesting
Another Field That Doesnt Matter = 216
Name = The_Job_name
More Useless Stuff = Blah blah
Estimated Completion = Aug 13, 2015 13:30 EDT
Even Yet Still More Nonsense = Exciting value
...
当前未激活的作业的预计完成时间将为空值。字段名称很长,多词名称包含空格,如图所示。定界符始终为“=”,并且始终出现在同一列中,并在两侧用空格填充。可能列出了几十个工作,每个工作大约有 36 个字段。在任何给定时间,只有一两个活跃的,而那些是我关心的。
我正在尝试为当前活动的每条记录在一行上获取“名称”字段的值和“估计完成”字段的值,因此忽略空值,如下所示:
Job_04 Aug 13, 2015 13:30 EDT
Job_21 Aug 09, 2015 10:10 EDT
...
我从<command> | grep '^Name\|^Estimated' 开始,这让我得到了我关心的台词。
我已经转到awk -F"=" '/^Name|^Estimated/ {print $2}',它自己获取值。这就是开始出错的地方 - 我尝试使用awk -F"=" '/^Name|^Estimated/ {print $2}'| sed 'N;s/\n/ /' 加入所有其他行,但输出非常不稳定。除此之外,我不确定我是否应该寻找空行并消除它们(和前一行)以在这一点上摆脱空值,或者是否最好将值读入变量并打印它们。
我不是 Perl 人,但如果那是更好的方法,我很乐意换档并朝那个方向前进。任何想法或建议表示赞赏,谢谢!
Some Field I Dont Care About = Nothing Interesting
Another Field That Doesnt Matter = 216
Name = Job_4119
More Useless Stuff = Blah blah
Estimated Completion =
Even Yet Still More Nonsense = Exciting value
...
【问题讨论】:
-
您能澄清一下您对 NULL 的含义吗?如果名称为空,估计是否为空?
-
贴一个空字段的例子。