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)

これを小さな部分に分割します。最初の 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

関連情報