obtenha um script para expandir um barramento em portas individuais:

0

Eu tenho o seguinte arquivo que tem alguns barramentos:

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

e eu quero expandi-lo para bits individuais da seguinte forma:

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

como posso fazê-lo com sed ou awk ou perl ?

    
por Ian 11.11.2018 / 00:48

2 respostas

0

É bastante deselegante, mas

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

Tente também

$ 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
    
por 11.11.2018 / 18:08