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

How to pass a parameter to a regex inside an awk command

我在将参数传递给 awk 中的正则表达式时遇到问题 command.What 似乎是这里的问题?正则表达式是否读取参数名称而不是值?谢谢

FILE=*some file here*
TEST_STRING1=test


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

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

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

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

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

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

然后,在 awk 中

if ([=12=] ~ regex) ...