有没有办法通过awk编程读取用户输入?我尝试编写脚本来读取包含学生姓名和ID的文件.我必须通过键盘从用户那里获得学生的名字,并使用awk返回所有学生的成绩.
Ste*_*eve 16
您可以使用该getline
功能收集用户输入.确保在BEGIN
块中设置此项.这是以下内容script.awk
:
BEGIN {
printf "Enter the student's name: "
getline name < "-"
}
$2 == name {
print
}
Run Code Online (Sandbox Code Playgroud)
这是一个包含ID,名称和结果的示例文件:
1 jonathan good
2 jane bad
3 steve evil
4 mike nice
Run Code Online (Sandbox Code Playgroud)
运行如下:
awk -f ./script.awk file.txt
Run Code Online (Sandbox Code Playgroud)
假设输入文件格式为:
name<tab>id
Run Code Online (Sandbox Code Playgroud)
对,你想打印文件中的名称与用户输入匹配的行,试试这个:
awk '
BEGIN { FS=OFS="\t"; printf "Enter name: " }
NR == FNR { name = $0; next }
$1 == name
' - file
Run Code Online (Sandbox Code Playgroud)
或者使用GNU awk,您可以使用nextfile,这样您就不必在输入后输入control-D:
awk '
BEGIN { FS=OFS="\t"; printf "Enter name: " }
NR == FNR { name = $0; nextfile }
$1 == name
' - file
Run Code Online (Sandbox Code Playgroud)
发布一些样本输入和预期输出,如果这不是你想要做的.
归档时间: |
|
查看次数: |
11953 次 |
最近记录: |