我在 bash 中使用 awk 命令时遇到问题,我想找到带有变量的模式,但它不起作用。你能告诉我这条线有什么问题吗?
awk -F" " "/$PWD/ {print $1,$3}" file.txt
答案1
由于您一直在使用双引号,因此任何$
- 变量在到达 awk 之前都会被 bash 扩展。这是第一个问题:{ print $1, $3 }
将扩展到{ print , }
.
接下来,您尝试使用的 awk 语法是/<regular expression>/ { <action> }
:正则表达式不允许包含任何未加引号的斜杠,但$PWD
肯定包含一些。这是第二个问题。
您可以尝试这样的方法:
"/${PWD//\//\\/}/ { print \$1, \$3 }"
/
这要求 bash 将任何出现的in替换$PWD
为\/
,并且还转义和$
的符号,以便 bash 保持它们完好无损。$1
$3