処理のためにbashスクリプトからawk出力を収集する

処理のためにbashスクリプトからawk出力を収集する

フォルダ内の複数のファイルを処理するbashスクリプトにループがあります。私のループで、各ファイルに対して次の行を実行します。

awk -F":" '{ print "Name: " $1 "\t\tID:" $3 }' $file

ループ以外の処理のために、いくつかのbash変数/配列で処理されたすべてのファイルの出力を収集したいと思います。 Bashでどのようにこれを達成できますか?

答え1

これはシェルスクリプト配列を使用して簡単に実行できます。

i=0
for file in file1 file2 ....; do
    output[$i]=$(awk -F":" '{ print "Name: " $1 "\t\tID:" $3 }' "${file}")
    i=$((${i}+1))
done

答え2

a0f3dd13 と同様に使用できます。関連ソート。特にデータを取得するときに便利です。

連想配列は、整数の代わりに文字列をインデックスとして使用できるため(デフォルトではハッシュマップです)、データをより簡単に取得できます。

declare -A output
for file in file1 file2 ....;do
    output["$file"]=$(awk -F":" '{ print "Name: " $1 "\t\tID:" $3 }' "${file}")
done

その後、データを取得するには、次を使用できます。

echo "${output[file1]}"

すると、得られた結果が出力されます。file1

関連情報