【发布时间】:2018-09-28 22:18:04
【问题描述】:
我正在编写一个调用 awk 脚本的 shell 脚本,然后我使用 getline 在 BEGIN 中获取一些用户输入,并将输入保存到一些变量中。
BEGIN {printf "What's the word?"
getline word < "-"
}
现在,其中一个变量称为“单词”,我想在脚本中的另一种模式中使用它来打印包含给定单词的所有行。我尝试过这样的事情:
/(^| )word( |$)/
它将打印包含单词“word”的所有行,我知道它不会起作用,因为它不被识别为变量。我搜索了很多,发现以
开头的模式$0~
但在我的情况下它也不起作用。有没有办法可以将变量传递给此模式并打印包含存储在变量中的单词的所有行?
【问题讨论】:
-
您没有使用How do I use shell variables in an awk script? 中的模式是否有原因?
-
我知道 -v 选项可用于变量,但这会将它从 shell 传递到 awk 脚本,我尝试读取 BEGIN 部分中的输入而不是 shell 本身.
-
坦率地说,从 shell 而不是从 awk 进行读取让我感到震惊,因为在大多数情况下这是明智的方法——如果需要,您的 awk 脚本的输入可以来自非终端源。但是... 耸耸肩,您比我更了解您的运行时上下文,并且与这里提出的问题正交。