バスを個々のポートに拡張するスクリプトを取得します。

バスを個々のポートに拡張するスクリプトを取得します。

いくつかのバスを含む次のファイルがあります。

signal_a[79:74]                 No     No          No          INPUT
signal_b[83:81]                 No     No          No          INPUT
signal_c[91]                    No     No          No          INPUT

次のように個々のビットに拡張したいと思います。

signal_a[79]                 No     No          No          INPUT
signal_a[78]                 No     No          No          INPUT
signal_a[76]                 No     No          No          INPUT
signal_a[77]                 No     No          No          INPUT
signal_a[76]                 No     No          No          INPUT
signal_a[75]                 No     No          No          INPUT
signal_a[74]                 No     No          No          INPUT
signal_b[83]                 No     No          No          INPUT
signal_b[82]                 No     No          No          INPUT
signal_b[81]                 No     No          No          INPUT
signal_c[91]                 No     No          No          INPUT

sedまたはawkまたはを使用してどのように達成できますかperl

ベストアンサー1

これはちょっと面倒ですが

perl -lne '
  ($a,$b) = ($2 == "" ? $1 : $2,$1) if /\[(\d+)(?:\:(\d+))?\]/; 
  for $n (reverse $a..$b) {
    print s/\[.*?\]/"[$n]"/re
  }
' file

おすすめ記事