我有一个 bash 脚本,我想从中调用 awk 文件。
我将如何调用 awk 文件fire.awk
以及fire.awk
.我见过#!/bin/awk -f
但不确定这是否是惯例。
为什么人们要包含#!/bin/awk -f
在 awk 文件中?
答案1
为了从 shell 脚本调用 awk 脚本,您有两个/三个解决方案:
- shell脚本里面的awk脚本
文件foo.sh
:
#! /usr/bin/env bash
awk '{print}' < input.txt > output.txt
如果您的 awk 脚本非常短,则很有用。
如果你有一个很大的 awk 脚本,即使有换行,也很糟糕。 IDE 无法识别 awk 语法'...'
- 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/
有命令,则可以省略,但它并不真正安全。awk
PATH
文件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 文件,如有疑问,请阅读第一行以做出更好的选择。