从日志文件读取变量值并将其设置为 KSH shell 脚本

read and set the value of variable from log file to KSH shell script

我有一个日志文件(在 运行 一个 python 脚本的输出中) 日志文件包含我想传递给 shell 脚本的变量列表。我如何完成这个

例子 日志文件具有以下内容。它有变量 x, y, z

文件内容 example.log:

2016-06-07 15:28:12.874 INFO x = (10, 11, 12)
2016-06-07 15:28:12.874 INFO y = case when id =1 then gr8 else ok end
2016-06-07 15:28:12.874 INFO z = 2016-06-07

我想让shell脚本读取变量并在shell程序中使用

样本shell shell.ksh

分配变量

var1 = read_value_x from example.log
var2 = read_value_y from example.log

是否有一个通用的 shell 函数可用于读取日志和解析变量值

谢谢 PMV

读取日志文件,使用正则表达式获取每行=之后的值并循环分配给一个变量。

var1=$(awk -F " = " ' ~ /[x]$/' < file.log)
var2=$(awk -F " = " ' ~ /[y]$/' < file.log)

上面的 awk 实用程序命令将使用分隔符 " = " 并使用正则表达式检查是否 </code>末尾有 <code>xy;如果是,我们将值设置为相关变量。

如果你想在变量中设置第二部分

var1=$(awk -F " = " ' ~ /[x]$/{print }' < file.log)
var2=$(awk -F " = " ' ~ /[y]$/{print }' < file.log)

以下是您如何在 ksh 中合理高效地处理小文件:

# Read into variables $var1, $var2, ...
n=0
while IFS='=' read -r unused value; do
  typeset "var$((++n))=${value# }"
done < example.log

# Enumerate the variables created.
# Equivalent to: `echo "$var1"`, `echo "$var2"`, ...
for (( i = 1; i <= n; ++i)); do
  eval echo \"$'var'$i\"
done