
ファイル内に次のシーケンスがあります:
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
。