如何在egrep中使用用户定义的变量

时间:2013-08-16 22:26:02

标签: linux shell grep

您好我想知道如何在egrep with或condition中使用用户定义的变量。

如果我使用以下命令,我将根据需要获得结果。

grep -w "Connect" audit.log.13766735635311490 | egrep 'USER=\"root\"|DB=\"CUST_PRESTIGEWW_DB\"' | wc -l
24416

现在我已经在下面做了并执行了相同的命令,但获得了不同的结果

DATABASE=CUST_PRESTIGEWW_DB
grep -w "Connect" audit.log.13766735635311490 | egrep 'USER=\"root\"|DB=\"$DATABASE\"' | wc -l
40
grep -w "Connect" audit.log.13766735635311490 | egrep 'USER=\"root\"|DB=\""$DATABASE"\"' | wc -l
40
echo $DATABASE
CUST_PRESTIGEWW_DB

现在尝试更改变量值但没有工作

DATABASE=`echo "\"CUST_PRESTIGEWW_DB\""`
echo $DATABASE
"CUST_PRESTIGEWW_DB"
grep -w "Connect" audit.log.13766735635311490 | egrep 'USER=\"root\"|DB=$DATABASE' | wc -l
grep -w "Connect" audit.log.13766735635311490 | egrep 'USER=\"root\"|DB='"$DATABASE" | wc -l
119956
grep -w "Connect" audit.log.13766735635311490 | egrep 'USER=\"root\"|DB="'$DATABASE'"' | wc -l
114

任何人都可以帮我怎么做吗?

1 个答案:

答案 0 :(得分:1)

使用:

... egrep 'USER="root"|DB='"$DATABASE" ...

您需要关闭单引号部分才能使bash展开$DATABASE。另请注意,您不需要在单引号字符串中转义双引号。