Unix AWK脚本命令行参数和文件输入
我需要命令行参数和文件作为输入。 我尝试了以下操作并显示错误:Unix AWK脚本命令行参数和文件输入,unix,awk,Unix,Awk,我需要命令行参数和文件作为输入。 我尝试了以下操作并显示错误: #!/usr/bin/awk -f BEGIN{ print ARGV[1] } { print $1, $3 } END{ print "Done" } 显示了命令行参数,但我似乎找不到读取文件的方法 谢谢。在这种情况下,您可以在开始块内设置ARGV[1]或ARGC: 男子1p awk: ARGC ARGV数组中的元素数 ARGV命令行参数数组,不包括选项和程序参数,编号从零到ARGC−一, ARGV中
#!/usr/bin/awk -f
BEGIN{
print ARGV[1]
}
{
print $1, $3
}
END{
print "Done"
}
显示了命令行参数,但我似乎找不到读取文件的方法
谢谢。在这种情况下,您可以在开始块内设置ARGV[1]或ARGC:
男子1p awk:
ARGC ARGV数组中的元素数
ARGV命令行参数数组,不包括选项和程序参数,编号从零到ARGC−一,
ARGV中的参数可以修改或添加到;ARGC可以改变。当每个输入文件结束时,awk应处理ARGV的下一个非空元素,直到ARGC的当前值−1(包含),作为下一个输入文件的名称。因此,将ARGV的元素设置为null意味着它不应被视为输入文件。名字是−' 指示标准输入。如果参数与赋值操作数的格式匹配,则应将此参数视为赋值,而不是文件参数
awk需要的是文件名而不是3。如果您需要传递一个参数,可以使用v=3代替,只需报告该值即可。@karakfa不使用v=3可以做到这一点吗?谢谢您的回复。不,否则awk将需要一个文件名。只有x=y类型被视为变量Decellation。请将awk脚本放入bash脚本中。请参阅
cat users.txt |./temp.awk 3
3
awk: ./temp.awk:4: fatal: cannot open file `3' for reading (No such file or directory)
BEGIN {
print ARGV[1]
# Empty ARGV[1] so that it is not treated as a filename
ARGV[1]=""
}
{
print $1, $3
}
END {
print "Done"
}