从日志文件读取变量值并将其设置为 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>x
或 y
;如果是,我们将值设置为相关变量。
如果你想在变量中设置第二部分
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
我有一个日志文件(在 运行 一个 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>x
或 y
;如果是,我们将值设置为相关变量。
如果你想在变量中设置第二部分
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