使用 awk 在 Unix 中的檔案中模式搜尋使用者輸入

使用 awk 在 Unix 中的檔案中模式搜尋使用者輸入

我正在嘗試編寫 awk 腳本來搜尋文件中使用者輸入的模式。
我的程式碼如下所示:
awk 'BEGIN{printf "Enter : ";getline input<"/dev/tty"} /'"$input"'/ {print}' <abc.txt
我得到的輸出是整個檔案。有人可以幫我找出哪裡出錯了嗎?

答案1

你要做的是:從 tty 讀取模式,將其放入 awk(不是 shell 的)稱為 input 的變數中,然後匹配 a 的內容行稱為輸入的變數。 (只需查看引號並嘗試自己解釋代碼。)該變數為空,因此 awk 將行與 // 匹配,這是一個始終匹配的空正則表達式。

您需要做的就是

$0 ~ input { print }

或者

match( $0, input) { print }

實際上「{ print }」可以省略,因為任何符合事項的預設操作都是列印記錄。

相關內容