从文本中删除最后一列(pdb文件保留其原始格式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从文本中删除最后一列(pdb文件保留其原始格式相关的知识,希望对你有一定的参考价值。

由空格HEADER NpXynWT_apo_300K_0001_amber分隔的列文件

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

从这个文件我需要删除最后一列,在输出中的其余列之间保持相同的空格数:HEADER NpXynWT_apo_300K_0001_amber

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函数来指示分隔符的类型(空格的数量),列的数量(最后一个)。是否有一些通用的溶剂可以去除任何数量的前一个空格的最后一列?

答案

这适用于gnu sed:

 sed -r 's/s+S+$//' file
另一答案
$ 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
  • *匹配零个或多个空格,
  • [^ ]*匹配零个或多个任何字符但空格,
  • qazxsw poi将qazxsw poi与输入行匹配,并用s/regexp/replacement/替换匹配的子字符串。

样本中有尾随空格,上面的命令也将删除它们。如果您的实际输入没有,请使用:

regexp

如果这些尾随空格实际上是回车(即您的输入具有Windows行结尾):

replacement
另一答案

如果sed 's/ *[^ ]*$//' file 文件中的数据,试过gnu sed:

sed 's/ *[^ ]*
$//' file

试过gnu awk:

d

以上是关于从文本中删除最后一列(pdb文件保留其原始格式的主要内容,如果未能解决你的问题,请参考以下文章

在 Outlook 电子邮件回复中包含原始文本和格式

删除同一目录中多个CSV文件中的前两列和最后一列

从文本框中复制很多数字时保留数字格式

如何在 Python3 中从图像中删除矩形形状,保留文本?

用java怎么才能在csv文件指定位置写入新的数据,csv原始数据保留。

更新联系人姓名会保留最后一个联系人一秒钟