在awk中,getline<是什么意思? " - "

时间:2017-05-17 01:50:43

标签: awk

BEGIN {
   printf "Enter your name"
   getline < "-"
}

上图:为什么不只是getline而不是getline < "-""-"是什么意思?

2 个答案:

答案 0 :(得分:2)

-表示标准输入,例如终端。如果没有,如果在命令行上指定了文件,awk将从该文件中读取。

首先,让我们假设有一个文件:

$ cat file
Tom

现在,让我们运行您的代码而不使用<"-"

$ awk 'BEGIN { printf "Enter your name: "; getline; print "Name=" $0 }' file
Enter your name: Name=Tom

如您所见,它从文件file中读取名称。

假设我们希望用户在终端输入名称。在这种情况下,我们希望从终端获取一行,表示为-,而不是从文件中获取。因此,我们使用:

$ awk 'BEGIN { printf "Enter your name: "; getline <"-"; print "Name=" $0 }' file
Enter your name: John
Name=John

如您所见,这个读取了我在终端输入的名称并忽略了该文件。

答案 1 :(得分:2)

该片段是awk程序的一部分。 Awk不是贝壳。

getline < "-"

从标准输入读取一行。

getline

awk命令行中指定的第一个文件读取一行,如果没有命令行参数,则读取标准输入。

如果你没有在awk命令行上指定文件,他们会做同样的事情,但如果你确实指定了一个文件,getline < "-"仍将从stdin中读取。

相关问题