awk 文件中的 Shebang

awk 文件中的 Shebang

我有一个 bash 脚本,我想从中调用 awk 文件。

我将如何调用 awk 文件fire.awk以及fire.awk.我见过#!/bin/awk -f但不确定这是否是惯例。

为什么人们要包含#!/bin/awk -f在 awk 文件中?

答案1

为了从 shell 脚本调用 awk 脚本,您有两个/三个解决方案:

  1. shell脚本里面的awk脚本

文件foo.sh

#! /usr/bin/env bash

awk '{print}' < input.txt > output.txt

如果您的 awk 脚本非常短,则很有用。

如果你有一个很大的 awk 脚本,即使有换行,也很糟糕。 IDE 无法识别 awk 语法'...'

  1. shell脚本之外的awk脚本

长 awk 脚本的更好解决方案。

  • 使用不可执行的 awk 脚本 您需要使用以下命令foo.awk在 shell 中调用 awk 脚本awk。文件foo.sh
#! /usr/bin/env bash

/bin/awk -f foo.awk < input.txt > output.txt

如果环境变量中/bin/有命令,则可以省略,但它并不真正安全。awkPATH

文件foo.awk

{print}

真的很短。 IDE 仅识别文件扩展名的语法。

  • 使用可执行的 awk 脚本

使用此命令chmod +x foo.awk可以在foo.awk文件上添加可执行标志。您不需要使用foo.awk该命令在 shell 中调用 awk 脚本awk

文件foo.sh

#! /usr/bin/env bash

foo.awk < input.txt > output.txt

您需要foo.awk在环境变量中包含目录PATH或为其添加目录前缀,如下所示:/my/program/directory/foo.awk ...

为了执行好的解释器,您需要在 awk 脚本的第一行添加一个 shebang 行foo.awk

#! /bin/awk -f

{print}

某些 IDE 会将此文件识别为带扩展名的 awk 文件,如有疑问,请阅读第一行以做出更好的选择。

相关内容