1

我一直在尝试破坏如下示例文件,以便第三列成为两部分,同时保持文件内的顺序。

100 400 500.00苹果 5.8 9.2

200 300 600.00狗 5.3 9.1

300 763 454.44小猫 5.7 9.2

应该导致

100 400 500.00 苹果 5.8 9.2

200 300 600.00 狗 5.3 9.1

300 763 454.44 小猫 5.7 9.2

我在 awk 中玩过这个,但似乎遇到了问题。

PS:在正则表达式中,分隔点始终是数字 [0-9] 后跟 [a-zA-Z]。

4

1 回答 1

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,您可以使用以下方法将拆分限制为仅第三个字段:

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
于 2011-04-04T19:37:25.030 回答