いくつかのバスを含む次のファイルがあります。
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
答え2
また試み
$ awk '{split ($1, T, "[][:]"); for (i=T[3]?T[3]:T[2]; i<=T[2]; i++) {$1 = T[1] "[" i "]"; print}}' OFS="\t" file3
signal_a[74] No No No INPUT
signal_a[75] No No No INPUT
signal_a[76] No No No INPUT
signal_a[77] No No No INPUT
signal_a[78] No No No INPUT
signal_a[79] No No No INPUT
signal_b[81] No No No INPUT
signal_b[82] No No No INPUT
signal_b[83] No No No INPUT
signal_c[91] No No No INPUT