awk ファイルの Shebang

awk ファイルの Shebang

awkファイルを呼び出すbashスクリプトがあります。

fire.awkawkファイルをどのように呼び出すのですかfire.awk?見たことがありますが、#!/bin/awk -fこれがルールであるかどうかはわかりません。

#!/bin/awk -f人々はなぜawkファイルに含めるのですか?

答え1

シェルスクリプトからawkスクリプトを呼び出すには、2つの3つの解決策があります。

  1. シェルスクリプト内のawkスクリプト

文書foo.sh:

#! /usr/bin/env bash

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

awkスクリプトが非常に短い場合に便利です。

大きなawkスクリプトがあれば、改行があっても悪いです。 IDEはawk構文を認識できません。'...'

  1. シェルスクリプトではなくawkスクリプト

長いawkスクリプトのためのより良いソリューションです。

  • 実行不可能なawkスクリプトの使用foo.awkシェルから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には、このコマンドを使用します。シェルからawkスクリプトを呼び出すためにこのコマンドをfoo.awk使用する必要はありません。foo.awkawk

文書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ファイルとして認識します。疑わしい場合は、最初の行を読んでより良い選択をしてください。

関連情報