如何在没有' awk -f'的情况下运行.awk文件命令?

时间:2014-07-01 15:27:45

标签: awk

我是awk脚本的新手。我试图弄清楚如何在没有awk -f命令的情况下运行awk文件。我看到人们一直在说添加"#!bin / awk -f"对于awk文件的第一行。但这对我的awk来说并非如此。它仍然给我"没有文件或目录"错误。 我的问题是"#!bin / awk -f"真的意思是,它做了什么?

3 个答案:

答案 0 :(得分:0)

你可能想要

#!/bin/awk -f 

#!之后的第一个斜线很重要。)

这告诉unix它应该用什么程序来运行'脚本用。

它通常被称为' shebang'来自hash + bang。

如果你想像这样运行你的脚本,你需要确保它是可执行的(chmod +x <script>)。

否则,您只需输入命令/bin/awk -f <script>

即可运行脚本

答案 1 :(得分:0)

Awk的Shebang解释

  • #!是一个shebang行的开头,它告诉shell哪个解释器用于脚本。
  • /bin/awk是awk可执行文件的路径。你可能需要更改这是你的awk安装在别处,或者你想使用不同版本的awk。
  • -f是awk的标志,告诉它将标志的参数解释为awk脚本。在一个shebang中,它告诉一些awks解释脚本的其余部分而不是文件。

你的Shebang(可能)破碎了

您使用的#!bin/awk -f不太可行,除非您将awk安装为$PWD/bin/awk。您可能打算使用#!/bin/awk代替。

在某些情况下,在shebang线上传递一个标志可能不适用于你的shell或你的awk。如果你让shebang线的其余部分正确,你可以尝试删除-f标志,看看它是否适合你。

答案 2 :(得分:0)

#!/bin/awk -f而非#!bin/awk。这可能会奏效,但没有保证。如果在其他位置安装了awk的人运行您的脚本,那么它将无法正常工作。你想要的是:#!/usr/bin/env awk -f

#!告诉bash使用什么来解释你的脚本。它应该位于文件的最顶层。它被称为Shebang。在此之后,您将路径放到解释器。

/usr/bin/env找到awk所在的位置,并使用该脚本作为解释器。因此,如果他们将awk安装到/usr/local/bin等其他地方,那么它就会找到它。这对你来说可能不重要,但这是一个很好的习惯。它更便于携带,并且可以更轻松地共享。

-f说awk会从文件中读取。您可以在bash中执行awk -f yourfilename.awk,但在shebang中,-f表示其余代码将是从中读取的文件。

我希望这有帮助。如果它不起作用或者不够清楚,请随时问我任何问题。