Variable dividida AWK

Variable dividida AWK

Tengo la siguiente secuencia en un archivo:

AA
MUi
MUi-j
MUi-N
ABk
ABk-l
ABk-N
MBk(i)
MBk-l(i)
MBk-l(i-j)
MBk-l(i-N)
MBk-N(i-j)
MBk-N(i-N)

Quiero dividirlo en partes pequeñas: los dos primeros caracteres siempre existirán, el resto son opcionales. i,j,k,l son números que pueden variar del 1 al 191. N es el carácter "N". Quiero tener el siguiente resultado:

AA
MU i
MU i j
MU i N
AB k
AB k l
AB k N
MB k i
MB k l i
MB k l i j
MB k l i N
MB k N i j
MB k N i N

¿Se puede hacer esto con AWK patsplit?

Respuesta1

A través de sed:

sed 's/^../& /;s/[-()]/ /g' datafile.dat

Respuesta2

Con GNU awk:

$ gawk -vFPAT='[A-Z]+|[a-z]' 'NF+=0' file
AA
MU i
MU i j
MU i N
AB k
AB k l
AB k N
MB k i
MB k l i
MB k l i j
MB k l i N
MB k N i j
MB k N i N

Tenga en cuenta que se omitirán líneas vacías, ya que se basa en un valor de efecto secundario distinto de cero NF+=0para activar el valor predeterminado print; si eso no es deseable, puede utilizar el formato un poco más detallado {NF+=0} 1.

información relacionada