2013-08-17 53 views
1

我試圖消除所有非字母數字字符和非空格字符和非破折號非下劃線組合兩個正則表達式規則在sed從字符串

echo "$1" |sed 's/[^a-zA-Z0-9[:space:]]//g' 

我要像

一些事情刪除不想要的字符
echo "$1" |sed 's/[^\-\_a-zA-Z0-9[:space:]]//g' 

如何我用兩個正則表達式規則混在一起?

樣品輸入:

a-b 
a_b 
ab 
a.. 
a.b 
a b 
a %b 
a ^&n 

我想這樣的輸出:

a-b 
a_b 
ab 
a 
ab 
a b 
a b 
a n 
+2

什麼是與你的第二個正則表達式的問題? –

+0

請考慮添加示例輸入和電流輸出。這看起來應該像現在這樣工作。祝你好運。 – shellter

+0

我的第二正則表達式給誤差爲無效範圍操作者如果我改變它作爲這樣的: SED的/ [^ \ _ [\ - ] A-ZA-Z0-9 [:空間:]] // G'沒有更多的錯誤,但不工作太 – amin

回答

2

這適用於GNU的sed:

sed 's/[^-_a-zA-Z0-9[:space:]]//g' file 
 
$ cat file 
a-b 
a_b 
ab 
a.. 
a.b 
a b 
a %b 
a ^&n 

$ sed 's/[^-_a-zA-Z0-9[:space:]]//g' file 
a-b 
a_b 
ab 
a 
ab 
a b 
a b 
a n 
+0

也許'sed的 'S/[^ -_ [:alnum:] [:空間:]] // G' file'將工作太。 – potong