名前[3:0]バスを個々の配線に分離

名前[3:0]バスを個々の配線に分離

以下のようなデータがあります

A[3:0] INPUT
B[3:0] OUTPUT

今、以下に示すようなデータが必要です:

A[3] INPUT
A[2] INPUT
A[1] INPUT
A[0] INPUT
B[3] OUTPUT
B[2] OUTPUT
B[1] OUTPUT
B[0] OUTPUT

何か助けて?

答え1

awkアプローチ:

awk '{ split($1,a,/[\[:]/); d=a[2]+1; while(d--) printf "%s[%d] %s\n",a[1],d,$2 }' file

出力:

A[3] INPUT
A[2] INPUT
A[1] INPUT
A[0] INPUT
B[3] OUTPUT
B[2] OUTPUT
B[1] OUTPUT
B[0] OUTPUT

関連情報