我有一个这样的文本文件:
6.2341 -0.4024 -2.0936 Cl 0 0 0 0 0 0 0 0 0 0 0 0
0.1148 -3.7525 1.0392 S 0 0 0 0 0 0 0 0 0 0 0 0
-2.5441 -0.8745 1.3714 F 0 0 0 0 0 0 0 0 0 0 0 0
格式为:列1到10,11到20,21到30是(10.4)格式的x,y,z坐标,即长度= 10,小数点后4位;第31栏始终是一个空间;第32至32列是原子类型;其余列并不重要。
然而,由于某些未知原因,原子类型字段右移两列,如下所示:
6.2341 -0.4024 -2.0936 Cl 0 0 0 0 0 0 0 0 0 0 0 0
0.1148 -3.7525 1.0392 S 0 0 0 0 0 0 0 0 0 0 0 0
-2.5441 -0.8745 1.3714 F 0 0 0 0 0 0 0 0 0 0 0 0
如何使用sed命令和正则表达式匹配这些行并删除两个额外的空格?
答案 0 :(得分:0)
sed -r 's/(.{30}) /\1/'
可以解决问题。
将前30个字符分组,匹配两个额外的空格,将整数替换为分组字符。
答案 1 :(得分:0)
如果您不介意既不使用sed也不使用正则表达式,则可以使用cut
删除2个有问题的字符:
$ cut --complement -c31,32 file
6.2341 -0.4024 -2.0936 Cl 0 0 0 0 0 0 0 0 0 0 0 0
0.1148 -3.7525 1.0392 S 0 0 0 0 0 0 0 0 0 0 0 0
-2.5441 -0.8745 1.3714 F 0 0 0 0 0 0 0 0 0 0 0 0