【发布时间】:2013-03-15 14:27:41
【问题描述】:
我环顾四周,发现只有涉及该主题的问题或提供给我的答案不起作用。问题来了:
我正在为学校做一个作业,要求我读入 awk 脚本的命令行参数(一开始这似乎很奇怪,但是嗯)。我们使用的是旧版本的 Unix,而我正在运行 Bash。此 awk 只有 -f 和 -Fc 选项。基本上,我一直在尝试执行“awk -f awk_script arg1 arg2 arg3 arg4 arg5 arg6”,但每次 awk 都尝试将 arg1 作为文件打开,但事实并非如此。我在其他地方看到的一个例子是:
awk 'BEGIN { print "ARGV[1] = ", ARGV[1] }' foo bar
它应该打印“foo”,但在这个系统上我只得到输出“ARGV[1] = awk: can't open foo”。所以,总而言之,有没有办法解决这个问题?可以 awk 这个旧的读取命令行参数并将它们用于输入文件以外的任何内容吗?讲师注释文件暗示了上述用法(打印 foo),但他的程序甚至没有运行,所以......
任何帮助将不胜感激。
编辑后:使用 SunOS 5.10 且此 awk 不支持 -v 选项,仅支持 -f 和 -Fc
【问题讨论】:
-
这可能与您的操作系统版本和 awk 版本有关,因为...“它适用于我”;-)
$ awk 'BEGIN{ print "ARGV[1]=" ARGV[1]}' a b c- 输出 ->argv[1]=a。编辑您的问题以包含来自uname -a和awk --version的输出。祝你好运。 (您可能没有得到 --version 的响应,那么您的 awk 是非常原始的设备;-) -
哈哈 我没有得到 awk --version 的回复
-
在 SunOS 5.1 中,您使用的 awk 是 ~1977 年的“旧”awk。尝试将您呼叫的名称更改为
nawk。 (新的 awk)。 awk 的作者 'The Awk Programming Language' 的书是关于“新”awk 的,于 1988 年出版,但仍然强烈推荐。 'Effective Awk Programming' (2001) 也很棒,涵盖了对 gawk (gnu-awk) 的许多增强。祝你好运。 -
他使用的 awk 不仅旧了,而且坏了。任何人都不能使用它,永远。 Sun 需要被扇耳光才能继续运送它。