如何将参数传递给awk命令中的正则表达式

时间:2015-02-17 17:55:25

标签: regex bash unix awk ksh

我在将参数传递给awk命令中的正则表达式时遇到了麻烦。这里的问题似乎是什么?正则表达式是否读取参数名称而不是值?感谢

FILE=*some file here*
TEST_STRING1=test


awk -v testString1="$TEST_STRING1" 'BEGIN {

}
{
##Sample REGEX HERE
if ( $0 ~ "^testString1.* - \[.*\] - .*$") {
##DO SOMETHING HERE
            }
}
END{}
' $FILE

1 个答案:

答案 0 :(得分:2)

您需要使用awk字符串连接:

if ( $0 ~ "^" testString1 ".* - \[.*\] - .*$" ) {

或者,在shell中进行变量替换 - 引用有点棘手

awk -v regex="^${TEST_STRING1}"'.* - \[.*\] - .*$'

然后,在awk中

if ($0 ~ regex) ...