我有一个日志文件(运行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
答案 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)