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

时间:2016-06-08 03:41:36

标签: variables redirect ksh

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

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

档案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 的内容:

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

我希望shell脚本读取变量并在shell程序中使用

示例shell shell.ksh

分配变量

{{1}}

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

由于 PMV

3 个答案:

答案 0 :(得分:1)

以下是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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

上面的 awk 实用程序命令将使用分隔符" = "并使用正则表达式检查$1是否有x或最后y;如果是,我们将值设置为相关变量。

如果您想在变量

中设置第二部分
var1=$(awk -F " = " '$1 ~ /[x]$/{print $2}' < file.log)
var2=$(awk -F " = " '$1 ~ /[y]$/{print $2}' < file.log)