鉴于此脚本
#!/bin/awk -f
{
print $1
}
可以像这样调用
foo.awk foo.txt
但是我希望脚本始终调用foo.txt
。所以我想修改脚本,以便可以在没有输入文件的情况下调用它,比如这个
foo.awk
答案 0 :(得分:4)
#!/bin/awk -f
BEGIN {ARGV[ARGC++] = "foo.txt"}
{print $1}
这会将foo.txt
添加到参数列表的末尾,就像您将其放在命令行中一样。这还有一个额外的好处,即允许您扩展脚本而不仅仅是打印,而不必将所有内容都放在BEGIN
块中。
答案 1 :(得分:0)
#!/bin/sh
awk '{print $1}' foo.txt
您可以将其命名为foo.awk
然后
chmod +x foo.awk
现在在同一目录下尝试./foo.awk
。
修改强>
#!/bin/awk -f
BEGIN{while(getline < "/path/to/foo.txt")print $1 }
奇怪的要求。为什么bash包装不符合您的要求?您确实使用shell
标记了问题
无论如何,上面的脚本应该是你需要的。
答案 2 :(得分:0)
我会使用shell包装器:
#!/bin/bash
foo.awk foo.txt