Bash

bash 腳本中帶有變數的 awk 模式

  • March 17, 2015

我在 bash 中遇到命令 awk 的問題,我想用變數查找模式,但它不起作用。你能告訴我這條線有什麼問題嗎?

awk -F" "  "/$PWD/ {print $1,$3}"  file.txt

由於您一直在使用雙引號,因此任何 -$變數在到達 awk 之前都會被 bash 擴展。這是第一個問題:{ print $1, $3 }將擴展為{ print , }.

接下來,您嘗試使用的 awk 語法是/<regular expression>/ { <action> }:正則表達式不允許包含任何不帶引號的斜杠,但$PWD肯定包含一些。這是第二個問題。

你可以嘗試這樣的事情:

"/${PWD//\//\\/}/ { print \$1, \$3 }"

這要求 bash 將任何出現的/in$PWD替換為\/,並且還轉義了and 的$符號,$1以便$3bash 使它們保持原樣。

引用自:https://unix.stackexchange.com/questions/190726