Variável de divisão AWK

Variável de divisão AWK

Eu tenho a seguinte sequência em um arquivo:

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)

Quero dividi-lo em pequenos pedaços: os dois primeiros caracteres sempre existirão, os demais são opcionais. i,j,k,l são números que podem variar de 1 a 191. N é o caractere “N”. Quero ter o seguinte 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

Isso pode ser feito com o AWK patsplit?

Responder1

Através da sed:

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

Responder2

Com 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

Observe que isso irá pular linhas vazias, pois depende de um valor de efeito colateral diferente de zero NF+=0para acionar o padrão print; se isso for indesejável, você pode usar o método um pouco mais detalhado {NF+=0} 1.

informação relacionada