Разделенная переменная AWK

Разделенная переменная AWK

У меня в файле есть следующая последовательность:

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)

Я хочу разбить его на небольшие части: первые два символа будут всегда существовать, остальные необязательны. i,j,k,l — это числа, которые могут варьироваться от 1 до 191. N — это символ «N». Я хочу получить следующий результат:

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

Можно ли это сделать с помощью AWK patsplit?

решение1

С помощью sed:

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

решение2

С помощью 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

NF+=0Обратите внимание, что это пропустит пустые строки, поскольку для запуска значения по умолчанию требуется ненулевое значение побочного эффекта print; если это нежелательно, можно использовать немного более подробный {NF+=0} 1.

Связанный контент