2011-01-23 47 views
1

我寫了一個腳本來替換某些表達式並刪除其他表達式,但是它在清除特殊字符方面失敗了。設置LANG = C解決了這個問題,但是可以在sed中設置該環境變量嗎?我可以在sed中設置LANG變量嗎?

回答

0

如果您的腳本是sed腳本,您可以將該部分壓低並將其放入標準shell腳本中。例如

#!/usr/bin/sed -f 

1 { 
    x 
    s/^$/  /
    s/^.*$/&&&&&&&&/ 
    x 
} 

#!/bin/sh 

export LANG=C 

/usr/bin/sed ' 
1 { 
    x 
    s/^$/  /
    s/^.*$/&&&&&&&&/ 
    x 
} 
' "[email protected]" 

(從一個例子sedinfo文檔中。)

與後"[email protected]",應該傳遞參數和處理標準輸入相同的方式。

+1

使用'「$ @」';雙引號是至關重要的。如果沒有它們,$ @與$ *是相同的,並且會破壞文件名中的空格(更準確地說,它將它們當作分隔符並將名稱拆分爲兩個或多個作爲單獨參數傳遞的片斷)。 **總是**使用'「$ @」'(好吧,幾乎總是;'總是',直到你知道爲什麼你不需要在某些特殊情況下 - 在一般情況下,你使用'「@ @」'和不要三思而後行)。 –

+0

非常好,謝謝。 –

2

不,但您不必。你可以在執行你的sed命令之前設置envirinment變量。

0

您可以設置環境變量,使其只爲命令或腳本的單次調用的活躍:

LANG=C sed ... 

LANG=C sedscript 
相關問題