bash 脚本中带有变量的 awk 模式

bash 脚本中带有变量的 awk 模式

我在 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

相关内容