일부 버스가 포함된 다음 파일이 있습니다.
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