如何将参数传递给 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) ...
我在将参数传递给 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) ...