用于从文本日志文件中提取/检索值的 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 字段值)的主要内容,如果未能解决你的问题,请参考以下文章
shell中的cut和paste函数,可以从多个文本中提取特定的列