SED改变了最后的圆柱文本

时间:2017-11-09 13:42:06

标签: linux bash sed

我想问一下如何使用sed在最后一栏中将字母A改为C. 输入例如:

HETATM   18  H   UNK     0      12.447  20.851  23.373  0.00  0.00     0.167 HD
HETATM   19  C   UNK     0      11.406  19.947  21.942  0.00  0.00     0.033 A
HETATM   20  C   UNK     0      10.684  20.899  21.181  0.00  0.00     0.030 A    
HETATM   21  C   UNK     0       9.503  20.541  20.507  0.00  0.00     0.019 A    
HETATM   22  C   UNK     0       9.032  19.211  20.545  0.00  0.00     0.032 A    
HETATM   23  C   UNK     0       9.772  18.248  21.264  0.00  0.00     0.019 A    
HETATM   24  C   UNK     0      10.946  18.613  21.948  0.00  0.00     0.030 A    
HETATM   25  C   UNK     0       7.833  18.846  19.889  0.00  0.00     0.253 C    
HETATM   26  O   UNK     0       7.856  18.994  18.642  0.00  0.00    -0.267 OA

输出:

HETATM   18  H   UNK     0      12.447  20.851  23.373  0.00  0.00     0.167 HD
HETATM   19  C   UNK     0      11.406  19.947  21.942  0.00  0.00     0.033 C
HETATM   20  C   UNK     0      10.684  20.899  21.181  0.00  0.00     0.030 C    
HETATM   21  C   UNK     0       9.503  20.541  20.507  0.00  0.00     0.019 C    
HETATM   22  C   UNK     0       9.032  19.211  20.545  0.00  0.00     0.032 C    
HETATM   23  C   UNK     0       9.772  18.248  21.264  0.00  0.00     0.019 C    
HETATM   24  C   UNK     0      10.946  18.613  21.948  0.00  0.00     0.030 C    
HETATM   25  C   UNK     0       7.833  18.846  19.889  0.00  0.00     0.253 C    
HETATM   26  O   UNK     0       7.856  18.994  18.642  0.00  0.00    -0.267 OA

我尝试过像这样:

sed 's/[A*]$/C/'

但输出如下:

HETATM   26  O   UNK     0       7.856  18.994  18.642  0.00  0.00    -0.267 OC 

1 个答案:

答案 0 :(得分:2)

简单 sed 方法:

sed 's/\<A[[:space:]]*$/C/' file
  • \< - 字边界(假设A字符仅作为独立字符出现)

  • [[:space:]]* - 匹配字符串末尾的可能空格$

输出:

HETATM   18  H   UNK     0      12.447  20.851  23.373  0.00  0.00     0.167 HD
HETATM   19  C   UNK     0      11.406  19.947  21.942  0.00  0.00     0.033 C
HETATM   20  C   UNK     0      10.684  20.899  21.181  0.00  0.00     0.030 C
HETATM   21  C   UNK     0       9.503  20.541  20.507  0.00  0.00     0.019 C
HETATM   22  C   UNK     0       9.032  19.211  20.545  0.00  0.00     0.032 C
HETATM   23  C   UNK     0       9.772  18.248  21.264  0.00  0.00     0.019 C
HETATM   24  C   UNK     0      10.946  18.613  21.948  0.00  0.00     0.030 C
HETATM   25  C   UNK     0       7.833  18.846  19.889  0.00  0.00     0.253 C    
HETATM   26  O   UNK     0       7.856  18.994  18.642  0.00  0.00    -0.267 OA