Unix 传递变量的awk
我正在努力解决bashshell脚本中的awk问题。在下面的代码片段中,我为awk中的正则表达式传递了一个变量var_awk。其思想是在正则表达式上方获取行,但下面的echo不显示任何数据Unix 传递变量的awk,unix,awk,solaris-10,Unix,Awk,Solaris 10,我正在努力解决bashshell脚本中的awk问题。在下面的代码片段中,我为awk中的正则表达式传递了一个变量var_awk。其思想是在正则表达式上方获取行,但下面的echo不显示任何数据 echo `ls -ltr $date*$f* | /usr/xpg4/bin/awk -v reg=$var_awk '/reg/ {print $0}'` 我无法为正则表达式注册,虽然当我打印正则表达式时,它正在打印,但当不按预期执行正则表达式时 if [ $GE == "HBCA" ] || [ $G
echo `ls -ltr $date*$f* | /usr/xpg4/bin/awk -v reg=$var_awk '/reg/ {print $0}'`
我无法为正则表达式注册,虽然当我打印正则表达式时,它正在打印,但当不按预期执行正则表达式时
if [ $GE == "HBCA" ] || [ $GE == "HBUS" ] || [ $GE == "HBEU" ]; then
for f in `ls -ltr $date*GEN*REVAL*log|grep -v LPD | awk '{split($9,a,"_")}{print a[3]}'`; do
echo $f
var_awk="$date"_RESET_CALC_"$f"
echo $var_awk
echo `ls -ltr $date*$f* | /usr/xpg4/bin/awk -v reg=$var_awk '/reg/ {print $0}'`
您不能以这种方式在正则表达式中使用变量。您需要执行以下操作:
/usr/xpg4/bin/awk -v reg="$var_awk" '$0~reg{ print $0 }'
或者干脆
/usr/xpg4/bin/awk -v reg="$var_awk" '$0~reg'
- 在
内部,变量reg将用作文字李>/
- 引用shell变量
- 您不能以这种方式在正则表达式中使用变量。您需要执行以下操作:
/usr/xpg4/bin/awk -v reg="$var_awk" '$0~reg{ print $0 }'
或者干脆
/usr/xpg4/bin/awk -v reg="$var_awk" '$0~reg'
- 在
内部,变量reg将用作文字李>/
- 引用shell变量
...whatever you had already..|awk -v reg="$var_awk" '$0~reg'
- 最好用引号括起shell变量,例如,如果您的var有空格
- awk中的
称为regex常量。它不能与变量一起使用,这就是它被称为/pattern/
常量的原因。在本例中,我们需要使用动态正则表达式
...whatever you had already..|awk -v reg="$var_awk" '$0~reg'
- 最好用引号括起shell变量,例如,如果您的var有空格
- awk中的
称为regex常量。它不能与变量一起使用,这就是它被称为/pattern/
常量的原因。在本例中,我们需要使用动态正则表达式
$(…)
符号,而不是在命令周围使用反勾号。通常,您应该使用$(…)
符号,而不是在命令周围使用反勾号。