我正在尝试获取存储在另一个 shell 脚本文件中的变量的输出。 例:
cat abc.log
var1=2
var2=2
var3=25
我正在编写一个脚本来获取var3
的值。
提前谢谢你。
awk -F= '$1 ~ /^[[:space:]]*var3/ { print $2 }' abc.log
将字段分隔符设置为 =,然后在行包含"var3"的地方,打印第二个字段。
或者,您可以:
source abc.log
然后:
echo $var3
使用sed
,您可以使用以下方法隔离具有特殊性的25
:
sed -n '/^[[:space:]]*var3=/s/^[^=]*=//p' file
解释
这是一般的替换形式,前面s/find/replace/
有一个匹配的表达式。总形式是/match/s/find/replace/
.选项-n
抑制图案空间的正常打印,末尾的p
告诉sed
打印发生匹配和替换的行。具体说来
/match/
查找具有任意数量的前空格字符后跟var3=
的行。POSIX[:space:]
字符类匹配任何空格,/find/
是从'^'
开头锚定的所有字符,这些字符不是[^=]
字符,然后匹配文字'='
字符,最后/replace/
是空字符串,不单独打印25
。
示例使用/输出
$ sed -n '/^[[:space:]]*var3=/s/^[^=]*=//p' file
25
grep
单行,如果你的grep
支持与Perl兼容的正则表达式(-P
选项;并非所有grep
都支持)
grep -Po '^s*var3=K.*' abc.log
或
grep -Po '^s*var3=K.*' abc.log | tail -n1
为了得到var3
的最后一个值,如果有多个var3
s是可能的。