如何制作awk变量的bash副本?

时间:2012-02-16 12:35:00

标签: linux bash awk

以下是我的问题的简化版本。

if (echo "AA BB CC" | awk '{ print $1 $2 }' | grep -q "B"); then
   echo $2
fi

我想在bash中提供$2,所以我可以在脚本的其他位置使用它。

能做到吗?

更新

我意识到我已经过多地简化了这个问题。 awk表达式应该是awk '{ print $1 $2 }',而不仅仅是我最初发布的awk '{ print $2 }'

3 个答案:

答案 0 :(得分:2)

您可以使用set

set -- `echo "AA BB CC" | awk '{print $2}'`
case $1 in *B*) echo $1;; esac

...或者如果您仅使用awk来分割输出,请让set执行该部分:

set -- `echo "AA BB CC"`
case $2 in *B*) echo $2;; esac

答案 1 :(得分:1)

记住awk的输出,测试它的正则表达式并打印出来:

output=$( echo "AA BB CC" | awk '{ print $2 }' )
if grep -q B <<< "$output" ; then echo "$output" ; fi

答案 2 :(得分:0)

您可以使用反引号运算符将stdout捕获到变量中,例如

a=`echo foo`
echo $a

对于您的示例,它将类似于:

a=`echo "AA BB CC" | awk '{ print $2 }' | grep -q "B"`
echo $a