2017-09-04 74 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 

也可能爲您的目的。