带方形偏振光的可变模式awk

带方形偏振光的可变模式awk,awk,Awk,在我的变量模式中有方括号(abc[0]),但awk无法找到模式。如果我将我的模式从abc[0]更改为abc\u 0,那么它就会工作 echo "test_var=$test_var, test_var_1=$test_var_1" # Output - test_var=abc[0], test_var_1=abc[0] echo "$test_var" | awk -v variable="$test_var_1" '$0 ~ va

在我的变量模式中有方括号(
abc[0]
),但awk无法找到模式。如果我将我的模式从
abc[0]
更改为
abc\u 0
,那么它就会工作

echo "test_var=$test_var, test_var_1=$test_var_1"
# Output - test_var=abc[0], test_var_1=abc[0]

echo "$test_var" | awk -v variable="$test_var_1" '$0 ~ variable {print $variable}'
# "NO OUTPUT"  



echo "test_var=$test_var, test_var_1=$test_var_1"
# test_var=abc_0, test_var_1=abc_0

echo "$test_var" | awk -v variable="$test_var_1" '$0 ~ variable {print $variable}'
# Here Output is abc_0

如何通过awk命令查找带有方括号的模式变量?

方括号是特殊的正则表达式字符

检查以下三个案例,也许它会澄清

$ awk 'BEGIN{if("abc[0]" ~ /abc[0]/) print "match"; else print "no match"}'
no match


$ awk 'BEGIN{if("abc0" ~ /abc[0]/) print "match"; else print "no match"}'
match


$ awk 'BEGIN{if("abc[0]" ~ /abc\[0\]/) print "match"; else print "no match"}'
match

设置test_var=“abc[0]”后,我无法重新创建此项。我假设你就是这么做的?请阅读,然后用“regexp”或“string”替换“pattern”,无论你的意思是什么,在你的问题的任何地方。我想通过awk命令找到一个变量模式。示例-echo“test abc[0]”awk-v variable=“abc[0]”“$0~variable{print variable}”请阅读我提供的链接,了解为什么使用“pattern”而不是regexp或string,并且没有部分/完全匹配的指示,会使您的问题模棱两可。不要忘记
if(“abc[0]”==“abc[0]”
if(index)(“abc[0]”,即“abc[0]”)