後続のawkスクリプトから1つのawkスクリプトで生成された配列にアクセスできますか?

後続のawkスクリプトから1つのawkスクリプトで生成された配列にアクセスできますか?

2つのawk文字列を含むシェルスクリプトがあります。

first_awk='
BEGIN {
}
{
# create some array here..
}
END{
}
'



second_awk='
BEGIN {
}
{

## Access the array created in first awk section.
}
END{
}
'

上記のようなことができますか?その後、awkセクションの最初のawkセクションで生成されたアクセス配列?

または、囲むシェルスクリプトで配列を宣言し、awk文字列の配列にアクセスできますか?

答え1

awkコードの一部をシェル変数に割り当ててから、変数を結合してawkへの単一の呼び出しを提供するプログラムを作成すると、ある変数から生成された配列に別の変数からアクセスできます。しかし、awkを別々に呼び出すために別のawkプログラムを作成するようです。この場合、ある awk に渡されたコードは別の awk に渡されたコード (配列宣言を含む) を知ることができません。

答え2

頑張ればそうだと思います。

awk -f first_awk -f second_awk ...

awkファイルは、呼び出された順序に従って「マージ」されます。first_awkfromで変数/配列定義を使用できますsecond_awk

しかし試してみると

awk -f first_awk ...
/bin/ls
awk -f second_awk ...

second_awkfirst_awk呼び出し中に使用された変数/配列を知る方法はありません。

各 awk 呼び出しは、実行の終わりに削除される新しいプロセスを生成します。

関連情報