BEGIN {
printf "Enter your name"
getline < "-"
}
上图:为什么不只是getline
而不是getline < "-"
? "-"
是什么意思?在awk中,getline是什么意思<“ - ”
BEGIN {
printf "Enter your name"
getline < "-"
}
上图:为什么不只是getline
而不是getline < "-"
? "-"
是什么意思?在awk中,getline是什么意思<“ - ”
-
表示标准输入等终端。没有这一点,如果在命令行中指定了一个文件,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
正如你可以看到,这一次读到我在终端上输入而忽略了文件的名称。
我试过了,就像你说的,谢谢 – kingslayer
该片段是awk程序的一部分。 Awk不是壳。
getline < "-"
从标准输入中读取一行。
getline
读取来自awk
命令行或标准输入中指定的第一文件中的一行,如果没有命令行参数。
因此,如果您不在awk
命令行中指定文件,但它们将执行相同的操作,但如果您确实指定文件,getline < "-"
仍会从stdin读取。
明白,谢谢 – kingslayer
这个问题是完全不可读的。我不知道你在问什么 – KeithC
问题在哪里? – Gammer