将嵌套字段分成两个新字段,维护顺序

时间:2011-04-04 19:32:01

标签: sed awk cut

我一直试图打破下面的示例文件,这样第三列就变成了两个部分,同时保持文件中的顺序。

  

100 400 500.00APPLE 5.8 9.2

     

200 300 600.00DOG 5.3 9.1

     

300 763 454.44KITTEN 5.7 9.2

应该导致

  

100 400 500.00 APPLE 5.8 9.2

     

200 300 600.00 DOG 5.3 9.1

     

300 763 454.44 KITTEN 5.7 9.2

我在awk玩弄了这个,但似乎有问题。

PS:要分离的点总是数字[0-9],后跟正则表达式中的[a-zA-Z]。

1 个答案:

答案 0 :(得分:2)

尝试:

sed 's/\([0-9]\)\([A-Z]\)/\1 \2/' ./infile

概念证明

$ sed 's/\([0-9]\)\([A-Z]\)/\1 \2/' ./infile
100 400 500.00 APPLE 5.8 9.2
200 300 600.00 DOG 5.3 9.1
300 763 454.44 KITTEN 5.7 9.2

或者,如果您有gawk,则可以使用以下方法将拆分限制为第3个字段:

awk '{$3=gensub(/([0-9])([A-Z])/,"\\1 \\2","",$3)}1' ./infile

概念证明

$ awk '{$3=gensub(/([0-9])([A-Z])/,"\\1 \\2","",$3)}1' ./infile
100 400 500.00 APPLE 5.8 9.2
200 300 600.00 DOG 5.3 9.1
300 763 454.44 KITTEN 5.7 9.2