Shell 在脚本中的Awk命令中使用变量
我在使用变量和使用awk命令打印第二个字段时遇到了一些问题。我试图从文件中的值中获取一个数字。文件中的值如下所示 MAX=10000(我只想要这个数字),我将它传递到脚本中的一个变量中,因此在脚本中我有变量Shell 在脚本中的Awk命令中使用变量,shell,awk,ksh,Shell,Awk,Ksh,我在使用变量和使用awk命令打印第二个字段时遇到了一些问题。我试图从文件中的值中获取一个数字。文件中的值如下所示 MAX=10000(我只想要这个数字),我将它传递到脚本中的一个变量中,因此在脚本中我有变量 parm_file=ParmFiles/Parmfile.parm session=s_session_value OLD_MAX_SEQ_NR=`awk -F '=' "/$session/ {getline; print $2}" < $parm_file` parm_fil
parm_file=ParmFiles/Parmfile.parm
session=s_session_value
OLD_MAX_SEQ_NR=`awk -F '=' "/$session/ {getline; print $2}" < $parm_file`
parm_file=ParmFiles/Parmfile.parm
session=s_session_值
OLD_MAX_SEQ_NR=`awk-F'='“/$session/{getline;print$2}”<$parm_file`
因为我有双引号来标识$session变量,它也将$2作为变量,所以它只是打印整行,而不是第二个字段
我还尝试将变量传递到awk命令中,如
OLD_MAX_SEQ_NR=`awk -F '=' \
-v var="$session" \
'/var/ {getline; print $2}' < $parm_file`
OLD_MAX_SEQ_NR=`awk-F'='\
-v var=“$session”\
“/var/{getline;print$2}”<$parm_文件`
但它似乎没有把变量放在var
所在的位置。我甚至尝试过对-v var=“s\u session\u value”
进行编码,但它不起作用
我想不出一种方法来让命令像通常那样查看
$2
,而不是变量。任何帮助都将不胜感激。如果没有parm文件的示例行,这有点棘手。但是我不明白你为什么不使用cut
,这会让它更简单吗
OLD_MAX_SEQ_NR=$(grep "$session" "$parm_file" | cut -d= -f2)
试试这个:
parm_file=ParmFiles/Parmfile.parm
session=s_session_value
OLD_MAX_SEQ_NR=$(
awk -F'=' -v pat="$session" \
'$0 ~ pat {getline; print $2}' < "$parm_file"
)
parm_file=ParmFiles/Parmfile.parm
session=s_session_值
旧的最大值顺序编号=$(
awk-F'='-v pat=“$session”\
“$0~pat{getline;print$2}”<“$parm_文件”
)
- 您需要通过使用
定义awk变量,将shell变量传递给-v
李>awk
- 在
中使用变量被视为文本。因此,使用/../
构造$0~var\u name
- 不推荐使用反勾号。使用命令替换
$(..)
- 引用你的变量李>