通过bash从特定列中删除空间

时间:2018-10-04 14:19:45

标签: bash

我是bash命令的新手,非常感谢您的帮助。

我有一个像这样的文件

ATOM      1  N   LYS P1852      10.932   0.523 -24.701  1.00  0.00
ATOM      2  HN1 LYS P1852      11.571   0.864 -25.419  1.00  0.00
ATOM      3  HN2 LYS P1852      10.431   1.305 -24.278  1.00  0.00
ATOM      4  HN3 LYS P1852      10.154   0.023 -25.132  1.00  0.00
ATOM      5  CA  LYS P1852      11.556  -0.319 -23.640  1.00  0.00

,我需要从所有行的特定位置(假设位置30)删除空格。输出必须如下:

ATOM      1  N   LYS P1852     10.932   0.523 -24.701  1.00  0.00
ATOM      2  HN1 LYS P1852     11.571   0.864 -25.419  1.00  0.00
ATOM      3  HN2 LYS P1852     10.431   1.305 -24.278  1.00  0.00
ATOM      4  HN3 LYS P1852     10.154   0.023 -25.132  1.00  0.00
ATOM      5  CA  LYS P1852     11.556  -0.319 -23.640  1.00  0.00

我正在尝试sed和其他命令,但直到现在都没有解决方案。

谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用cut

cut --complement -c 30 input.txt

从手册:

   -c, --characters=LIST
          select only these characters
   --complement
          complement the set of selected bytes, characters or fields

--complement是特定于GNU cut的(如果不可用):

cut -c -29,31- input.txt

以上命令将删除位置30处的任何字符。如果只想删除空格:

sed -E 's/^(.{29}) /\1/' input.txt