使用 awk 在 Unix 中的文件中对用户输入进行模式搜索

使用 awk 在 Unix 中的文件中对用户输入进行模式搜索

我正在尝试编写 awk 脚本来在文件中搜索用户输入的模式。
我的代码如下所示:
awk 'BEGIN{printf "Enter : ";getline input<"/dev/tty"} /'"$input"'/ {print}' <abc.txt
我得到的输出是整个文件。有人能帮我找出我错在哪里吗?

答案1

你要做的是:从 tty 读取模式,将其放入 awk(而不是 shell)的一个名为 input 的变量中,然后匹配变量名为 input。(只需查看引号并尝试自己解释代码。)该变量为空,因此 awk 将行与 // 进行匹配,这是一个始终匹配的空正则表达式。

你需要做的就是

$0 ~ input { print }

或者

match( $0, input) { print }

实际上可以省略“{ print }”,因为任何匹配事项的默认操作是打印记录。

相关内容