用于从文本日志文件中提取/检索值的 Shell 脚本(sqlcode 字段值)

Posted

技术标签:

【中文标题】用于从文本日志文件中提取/检索值的 Shell 脚本(sqlcode 字段值)【英文标题】:Shell script for Grepping/retrieving value from text log file (sqlcode field value) 【发布时间】:2018-10-28 21:09:50 【问题描述】:

您好,我需要从运行 sql 语句后生成的输出文件中检索 sqlcode 值。

下面的 sqlcode 的以下值显然是 0,我需要能够从多个语句块中获取该值,格式如下。

我不能使用 GNU 函数 - grep/sed/awk 可能有效,但我自己无法使用它们获取 sqlcode 值...

Outfile 将如下所示:

SQLCA Information

sqlcaid : SQLCA     sqlcabc: 136   sqlcode: 0   sqlerrml: 0

sqlerrmc:

 sqlerrp : SQLRI01F

sqlerrd : (1) -2147221503      (2) 1                (3) 4

           (4) 0                (5) 0                (6) 0

sqlwarn : (1)      (2)      (3)      (4)        (5)       (6)

           (7)      (8)      (9)      (10)       (11)

sqlstate: 00000

【问题讨论】:

听起来像是一道作业题...How do I ask homework questions on Stack Overflow。你应该努力。 请编辑您的 Q 以展示您解决问题的最佳尝试。(您认为应该可行的方法);如果我们不知道您尝试了什么,我们无法帮助您提高理解。祝你好运。 【参考方案1】:
sed -n '/sqlcode: /s/.*sqlcode: \([0-9]\+\) .*/\1/p'

如果该行有字符串“sqlcode:”,则替换所有内容并记住字符串“sqlcode:”之后和空格之前的一个或多个数字并打印记住的部分。

tutorialspoint 提供实时版本。

【讨论】:

感谢您的回答..我知道这是如何工作的,但是....我将 sed 包装在脚本中的变量中 var=$(sed -n '/sqlcode: /s/.* sqlcode: ([0-9]\+) .*/\1/p' file.out) 并且当我在 linux AIX 服务器上的脚本中实现这个时,file.out 在同一目录中,它什么都不返回。 . 我不太明白我尝试将它作为 shell 和 bash 运行【参考方案2】:

awk '/sqlcode/ print $7' 文件

0

awk 在文件中查找默认值/sqlcode/

print $7 打印第七个字段

【讨论】:

以上是关于用于从文本日志文件中提取/检索值的 Shell 脚本(sqlcode 字段值)的主要内容,如果未能解决你的问题,请参考以下文章

提取 2 个集合/文件之间的唯一值

如何将文本从文本文件转换为具有词频值的库键?

shell中的cut和paste函数,可以从多个文本中提取特定的列

编写 shell 脚本以提取日志文件的最后 24 小时:Raspbian on Pi

文本分类

文本分类