Sed 从txt(pdb文件)中删除最后一列,保留其原始格式
由空格分隔的列文件 标题NpXynWT_apo_300K_0001_琥珀色Sed 从txt(pdb文件)中删除最后一列,保留其原始格式,sed,Sed,由空格分隔的列文件 标题NpXynWT_apo_300K_0001_琥珀色 ATOM 1 N MET 1 22.849 2.086 17.904 1.00 0.00 N ATOM 2 CA MET 1 21.710 2.631 17.411 1.00 0.00 C ATOM 3 C MET 1 20.525 1.737 17
ATOM 1 N MET 1 22.849 2.086 17.904 1.00 0.00 N
ATOM 2 CA MET 1 21.710 2.631 17.411 1.00 0.00 C
ATOM 3 C MET 1 20.525 1.737 17.578 1.00 0.00 C
ATOM 4 O MET 1 20.530 0.650 17.113 1.00 0.00 O
ATOM 5 CB MET 1 21.878 2.974 15.929 1.00 0.00 C
ATOM 6 CG MET 1 20.710 3.743 15.334 1.00 0.00 C
ATOM 7 SD MET 1 20.954 4.142 13.593 1.00 0.00 S
ATOM 8 CE MET 1 22.272 5.350 13.704 1.00 0.00 C
ATOM 9 HA MET 1 21.472 3.545 17.955 1.00 0.00 H
ATOM 10 HB2 MET 1 22.788 3.567 15.838 1.00 0.00 H
ATOM 11 HB3 MET 1 22.004 2.033 15.394 1.00 0.00 H
ATOM 12 HG2 MET 1 19.813 3.133 15.439 1.00 0.00 H
ATOM 13 HG3 MET 1 20.589 4.667 15.900 1.00 0.00 H
ATOM 14 HE1 MET 1 23.144 4.895 14.173 1.00 0.00 H
ATOM 15 HE2 MET 1 22.536 5.694 12.704 1.00 0.00 H
ATOM 16 HE3 MET 1 21.939 6.198 14.303 1.00 0.00 H
ATOM 17 H1 MET 1 22.632 1.159 18.243 1.00 0.00 H
ATOM 18 H2 MET 1 23.105 2.667 18.689 1.00 0.00 H
ATOM 19 H3 MET 1 23.471 2.005 17.112 1.00 0.00 H
ATOM 1 N MET 1 22.849 2.086 17.904 1.00 0.00
ATOM 2 CA MET 1 21.710 2.631 17.411 1.00 0.00
ATOM 3 C MET 1 20.525 1.737 17.578 1.00 0.00
ATOM 4 O MET 1 20.530 0.650 17.113 1.00 0.00
ATOM 5 CB MET 1 21.878 2.974 15.929 1.00 0.00
ATOM 6 CG MET 1 20.710 3.743 15.334 1.00 0.00
ATOM 7 SD MET 1 20.954 4.142 13.593 1.00 0.00
ATOM 8 CE MET 1 22.272 5.350 13.704 1.00 0.00
ATOM 9 HA MET 1 21.472 3.545 17.955 1.00 0.00
ATOM 10 HB2 MET 1 22.788 3.567 15.838 1.00 0.00
ATOM 11 HB3 MET 1 22.004 2.033 15.394 1.00 0.00
ATOM 12 HG2 MET 1 19.813 3.133 15.439 1.00 0.00
ATOM 13 HG3 MET 1 20.589 4.667 15.900 1.00 0.00
ATOM 14 HE1 MET 1 23.144 4.895 14.173 1.00 0.00
ATOM 15 HE2 MET 1 22.536 5.694 12.704 1.00 0.00
ATOM 16 HE3 MET 1 21.939 6.198 14.303 1.00 0.00
ATOM 17 H1 MET 1 22.632 1.159 18.243 1.00 0.00
ATOM 18 H2 MET 1 23.105 2.667 18.689 1.00 0.00
ATOM 19 H3 MET 1 23.471 2.005 17.112 1.00 0.00
从该文件中,我需要删除最后一列,并在输出中的其余列之间保持相同数量的空格:
标题NpXynWT_apo_300K_0001_琥珀色
ATOM 1 N MET 1 22.849 2.086 17.904 1.00 0.00 N
ATOM 2 CA MET 1 21.710 2.631 17.411 1.00 0.00 C
ATOM 3 C MET 1 20.525 1.737 17.578 1.00 0.00 C
ATOM 4 O MET 1 20.530 0.650 17.113 1.00 0.00 O
ATOM 5 CB MET 1 21.878 2.974 15.929 1.00 0.00 C
ATOM 6 CG MET 1 20.710 3.743 15.334 1.00 0.00 C
ATOM 7 SD MET 1 20.954 4.142 13.593 1.00 0.00 S
ATOM 8 CE MET 1 22.272 5.350 13.704 1.00 0.00 C
ATOM 9 HA MET 1 21.472 3.545 17.955 1.00 0.00 H
ATOM 10 HB2 MET 1 22.788 3.567 15.838 1.00 0.00 H
ATOM 11 HB3 MET 1 22.004 2.033 15.394 1.00 0.00 H
ATOM 12 HG2 MET 1 19.813 3.133 15.439 1.00 0.00 H
ATOM 13 HG3 MET 1 20.589 4.667 15.900 1.00 0.00 H
ATOM 14 HE1 MET 1 23.144 4.895 14.173 1.00 0.00 H
ATOM 15 HE2 MET 1 22.536 5.694 12.704 1.00 0.00 H
ATOM 16 HE3 MET 1 21.939 6.198 14.303 1.00 0.00 H
ATOM 17 H1 MET 1 22.632 1.159 18.243 1.00 0.00 H
ATOM 18 H2 MET 1 23.105 2.667 18.689 1.00 0.00 H
ATOM 19 H3 MET 1 23.471 2.005 17.112 1.00 0.00 H
ATOM 1 N MET 1 22.849 2.086 17.904 1.00 0.00
ATOM 2 CA MET 1 21.710 2.631 17.411 1.00 0.00
ATOM 3 C MET 1 20.525 1.737 17.578 1.00 0.00
ATOM 4 O MET 1 20.530 0.650 17.113 1.00 0.00
ATOM 5 CB MET 1 21.878 2.974 15.929 1.00 0.00
ATOM 6 CG MET 1 20.710 3.743 15.334 1.00 0.00
ATOM 7 SD MET 1 20.954 4.142 13.593 1.00 0.00
ATOM 8 CE MET 1 22.272 5.350 13.704 1.00 0.00
ATOM 9 HA MET 1 21.472 3.545 17.955 1.00 0.00
ATOM 10 HB2 MET 1 22.788 3.567 15.838 1.00 0.00
ATOM 11 HB3 MET 1 22.004 2.033 15.394 1.00 0.00
ATOM 12 HG2 MET 1 19.813 3.133 15.439 1.00 0.00
ATOM 13 HG3 MET 1 20.589 4.667 15.900 1.00 0.00
ATOM 14 HE1 MET 1 23.144 4.895 14.173 1.00 0.00
ATOM 15 HE2 MET 1 22.536 5.694 12.704 1.00 0.00
ATOM 16 HE3 MET 1 21.939 6.198 14.303 1.00 0.00
ATOM 17 H1 MET 1 22.632 1.159 18.243 1.00 0.00
ATOM 18 H2 MET 1 23.105 2.667 18.689 1.00 0.00
ATOM 19 H3 MET 1 23.471 2.005 17.112 1.00 0.00
我想我需要一些SED函数来指示分隔符的类型(空格的数量)、列的数量(最后一个)。是否有一些通用的解决方案,可以用前面的空格的任何数量来删除最后一列
$ sed 's/ *[^ ]* *$//' file
ATOM 1 N MET 1 22.849 2.086 17.904 1.00 0.00
ATOM 2 CA MET 1 21.710 2.631 17.411 1.00 0.00
ATOM 3 C MET 1 20.525 1.737 17.578 1.00 0.00
ATOM 4 O MET 1 20.530 0.650 17.113 1.00 0.00
ATOM 5 CB MET 1 21.878 2.974 15.929 1.00 0.00
ATOM 6 CG MET 1 20.710 3.743 15.334 1.00 0.00
ATOM 7 SD MET 1 20.954 4.142 13.593 1.00 0.00
ATOM 8 CE MET 1 22.272 5.350 13.704 1.00 0.00
ATOM 9 HA MET 1 21.472 3.545 17.955 1.00 0.00
ATOM 10 HB2 MET 1 22.788 3.567 15.838 1.00 0.00
ATOM 11 HB3 MET 1 22.004 2.033 15.394 1.00 0.00
ATOM 12 HG2 MET 1 19.813 3.133 15.439 1.00 0.00
ATOM 13 HG3 MET 1 20.589 4.667 15.900 1.00 0.00
ATOM 14 HE1 MET 1 23.144 4.895 14.173 1.00 0.00
ATOM 15 HE2 MET 1 22.536 5.694 12.704 1.00 0.00
ATOM 16 HE3 MET 1 21.939 6.198 14.303 1.00 0.00
ATOM 17 H1 MET 1 22.632 1.159 18.243 1.00 0.00
ATOM 18 H2 MET 1 23.105 2.667 18.689 1.00 0.00
ATOM 19 H3 MET 1 23.471 2.005 17.112 1.00 0.00
匹配零个或多个空格*
匹配除空格以外的任何字符中的零个或多个[^]*
将s/regexp/replacement/
与输入行匹配,并将匹配的子字符串替换为regexp
replacement
sed 's/ *[^ ]*$//' file
如果这些尾随空格实际上是回车符(即您的输入具有Windows行结尾):
这适用于gnu sed:
sed -r 's/\s+\S+$//' file
如果在gnu上试用
d
文件中的数据:
sed -E 's/(.*)\s*\S+\s*/\1/' d
在gnu awk上试用:
awk -F' *' '{l=gensub(/(.*)\s\S+\s*$/,"\\1",1);print l}' d
即使是现在,我也不确定前导空格是故意使用还是错误使用;),将留给OPit的一个空格分隔文件,正如我在第一篇文章中指出的那样,因此我需要一个解决方案,该解决方案将适用于最后一列中的任意数量的空格!