2017-09-04 77 views
1

我有一个文本文件,它看起来像这样:正则表达式来删除特定的空间与sed的

HETATM11584 
HETATM 2514 
HETATM22222 
HETATM 8585 
HETATM 1213 
HETATM62626 
HETATM 6754 

有空格的数字字符串分隔HETATM。我想删除论文空格和输出新的文件看起来像这样:

HETATM11584 
HETATM2514 
HETATM22222 
HETATM8585 
HETATM1213 
HETATM62626 
HETATM6754 

我试图用sed

sed 's/.*HETATM [1-9]*.*/.*HETATM[1-9]*.*/' HETATM.txt > teste.txt 

但输出看起来是这样的:

HETATM11584 
.*HETATM[1-9]*.* 
HETATM22222 
.*HETATM[1-9]*.* 
.*HETATM[1-9]*.* 
HETATM62626 
.*HETATM[1-9]*.* 

这个操作的合适sed合成器是什么?

回答

1

您不应该使用模式作为替换字符串。您可以使用您的backreference字符串删除空格:

sed 's/\(HETATM\) \([0-9]\)/\1\2/' HETATM.txt > teste.txt 

HETATM和数字用括号捕获。捕获的字符串与\1\2一起输出(没有空格)。

2

如果整个文件就像是你的榜样,最简单的方法是删除所有空格:

$ sed -r 's/ //g' file.txt 
HETATM11584 
HETATM2514 
HETATM22222 
HETATM8585 
HETATM1213 
HETATM62626 
HETATM6754 

如果该文件是由组成任何后跟空间(S)和结束以数字,那么这将做到这一点:

$ sed -r 's/ +([0-9]+)$/\1/g' file.txt 
HETATM11584 
HETATM2514 
HETATM22222 
HETATM8585 
HETATM1213 
HETATM62626 
HETATM6754 
0

你必须使用sed

$ tr -d ' ' <HETATM.txt> teste.txt 

也可能为您的目的。