awkライブラリへのパス

awkライブラリへのパス

densel.awk次の呼び出しを含むawkファイルがあります。

@include "klnpan.awk"

同じディレクトリにありますが、「mylib.awk」を含むパスが必要なようです。

error: cannot open source file `klnpan.awk' for reading: No such file or directory

私はdensel.awk次のように実行します

awk -f "${path}"/densel.awk

答え1

awk変数を見つけるために作成されましたAWKPATH。ファイルを検索する:区切り文字列(と同様)を含めることができます。$PATH

デフォルトはビルドによって異なりますが、.:/usr/local/share/awkこれに似ている可能性があります。つまり、現在のディレクトリとシステムディレクトリでファイルを探します。

たとえば、これをアプリケーションディレクトリに設定できます。

export AWKPATH=/path/to/awk/files
awk -f densel.awk

答え2

AWKPATHを設定するには、.bashrcでこれを行います。

    if [[ -d $HOME/gawk ]] && command -v gawk >/dev/null; then
        if [[ -n $AWKPATH ]]; then
            AWKPATH=$(gawk 'BEGIN {print ENVIRON["AWKPATH"]}')
            export AWKPATH
        fi
        if [[ ":$AWKPATH:" != *:"$HOME/gawk":* ]]; then
            AWKPATH+=":$HOME/gawk"
        fi
    fi

$HOME/gawkgawkライブラリを保存する場所に置き換えます。

また、これらすべての機能はGNU awkにのみあるため、入力に慣れることをお勧めします。gawk

関連情報