2012-10-22 39 views
0

我試圖使用sed來替換字符串並考慮空白。
例子:使用sed和空格的正則表達式

Hello   World 

Hello George 

代替我想:

sed -e 's/Hello[:space]+World/Hello George/' ./infile > outFile 

,但它不工作。

我該如何解決這個問題?

+0

'[:空間:]'而不是'[:空間]',我想。另外,'[[:space:]]',否則方括號會被誤解。 – January

回答

3
sed -e 's/Hello[[:space:]]\+World/Hello George/' ./infile > outFile 

sed -e 's/Hello \+World/Hello George/' ./infile > outFile 

注意:在OSX,你需要

sed -E 's/Hello +World/Hello George/' ./infile > outFile 
+0

這是有效的。是否有一種情況我寧願在'[[:space:]]上使用'\ +'?它總是可用嗎? – Jim

+0

我認爲''[[:space:]]'包含標籤,也許還有其他一些標籤,而''就是......好的......單個空間。兩者都應該始終可用(在sed中) – doubleDown

0

您可以使用

sed -e 's/Hello\s\+World/Hello George/' ./infile > outFile 

空間的代碼\s,同\w將是單詞字符。

+0

不,你沒有*使用這種形式,''::':'''也可以使用,在某些情況下更好(unicode,更改區域設置等) – January

+0

測試過這個。不工作 – Jim

+0

@alestanis:我已經在上面解釋過了。 – January

1

可能是你可以用Perl去:

perl -pe 's/Hello\s*World/Hello Goerge/g'