我在将参数传递给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
答案 0 :(得分:2)
您需要使用awk字符串连接:
if ( $0 ~ "^" testString1 ".* - \[.*\] - .*$" ) {
或者,在shell中进行变量替换 - 引用有点棘手
awk -v regex="^${TEST_STRING1}"'.* - \[.*\] - .*$'
然后,在awk中
if ($0 ~ regex) ...