可以通过使用ARGV数组来指定命令行参数的文件名。如果ARGV数组的长度为1,则读取标准输入中的数据。
示例代码如下:
#!/usr/bin/awk -f
BEGIN {
if (ARGC < 2) {
print "Usage: awk_program file2"
exit 1
}
file2 = ARGV[2]
# Read from file or standard input
if (ARGC == 2) {
while (getline < "/dev/stdin") {
# process stdin input
}
} else {
while (getline < file2) {
# process file input
}
}
close(file2)
}
在这个示例代码中,首先检查ARGV数组的长度。如果小于2,则输出用法信息并退出程序。否则,将ARGV[2]赋值给file2变量,然后根据ARGV数组的长度进行不同的读取操作。如果长度为2,则从标准输入中读取数据;否则,从指定的文件中读取数据。在读取完数据后,需要使用close函数关闭文件句柄。