ファイルには次の順序があります。
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)
私はそれを小さな塊に分割したいと思います。最初の2文字は常に存在し、残りはオプションです。 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
。