Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在awk中获取用户输入_Awk - Fatal编程技术网

在awk中获取用户输入

在awk中获取用户输入,awk,Awk,有没有办法通过awk编程读取用户输入? 我尝试编写一个脚本来读取包含学生姓名和ID的文件。 我必须通过键盘从用户那里获取学生的姓名,并使用awk返回所有学生的结果。您可以使用getline功能收集用户输入。确保在BEGIN块中设置此选项。以下是script.awk的内容: BEGIN { printf "Enter the student's name: " getline name < "-" } $2 == name { print } 运行方式如下: aw

有没有办法通过awk编程读取用户输入? 我尝试编写一个脚本来读取包含学生姓名和ID的文件。
我必须通过键盘从用户那里获取学生的姓名,并使用awk返回所有学生的结果。

您可以使用
getline
功能收集用户输入。确保在
BEGIN
块中设置此选项。以下是
script.awk
的内容:

BEGIN {
    printf "Enter the student's name: "
    getline name < "-"
}

$2 == name {
    print
}
运行方式如下:

awk -f ./script.awk file.txt

假设输入文件的格式为:

name<tab>id
或者使用GNU awk,您可以使用nextfile,这样您就不必在输入后输入control-D:

awk '
BEGIN { FS=OFS="\t"; printf "Enter name: " }
NR == FNR { name = $0; nextfile }
$1 == name
' - file
发布一些示例输入和预期输出,如果这不是您想要做的。

我已经用line进行了测试

"awk 'BEGIN{printf "enter:";getline name<"/dev/tty"} {print $0} END{printf "[%s]", name}' < /etc/passwd" 

“awk”BEGIN{printf”enter:“;getline name+1 nextfile…我总是可以通过阅读您的答案来学习东西。即使所有内容都在手册页中。您刚刚用实际示例进行了很好的解释。使它们易于记住。谢谢。
awk '
BEGIN { FS=OFS="\t"; printf "Enter name: " }
NR == FNR { name = $0; nextfile }
$1 == name
' - file
"awk 'BEGIN{printf "enter:";getline name<"/dev/tty"} {print $0} END{printf "[%s]", name}' < /etc/passwd"