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_awk
fromで変数/配列定義を使用できますsecond_awk
。
しかし試してみると
awk -f first_awk ...
/bin/ls
awk -f second_awk ...
second_awk
first_awk呼び出し中に使用された変数/配列を知る方法はありません。
各 awk 呼び出しは、実行の終わりに削除される新しいプロセスを生成します。