
我正在嘗試編寫 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 }」可以省略,因為任何符合事項的預設操作都是列印記錄。