2012-11-09 190 views
0

我有把一個正則表達式一個sed命令裏面有點問題裏面,這是我的代碼:正則表達式一個sed命令

RAW_LIST_B=`echo $RAW_LIST_A | sed s/[0-9a-f]{8}//g` 

,我得到這個錯誤:

sed: -e expression #1, char 13: unterminated `s' command 

我不知道如何引用[0-9a-f]{8}所以,它消除了所有的8位十六進制數字和後間隔從RAW_LIST_A

謝謝,

+0

你能不能也爲$ RAW_LIST_A字符串樣本值/變量? – divanov

回答

2

你應該附上SED表達研究進入一個引號所以它會傳遞給殼牌sed的一個字符串參數

RAW_LIST_B=`echo $RAW_LIST_A | sed "s/[0-9a-f]\{8\} //g"` 

輸出示例:

$ echo "hello a5a5a5a6 world" | sed "s/[0-9a-f]\{8\} //g" 
hello world 
+0

沒有影響,我懷疑這是從字面上尋找「[0-9a-f] {8}」。 - 雖然沒有錯誤! – NWS

+0

那就是那個!謝謝 :) – NWS

2

這樣做:

RAW_LIST_B=`echo $RAW_LIST_A | sed 's/[0-9a-f]\{8\}//g'` 

因爲你沒參數報價到sed,外殼分裂成三個參數:s/[0-9a-f]{8}//g它傳遞給sed之前。

此外,請注意反斜槓以避開大括號。

+0

沒有效果,我懷疑這是從字面上尋找「[0-9a-f] {8}」。 - 雖然沒有錯誤! – NWS

+0

呃,我以爲你正在尋找一個文字'{8}'。如果這應該是「[0-9a-f]'原子重複次數」的次數,那麼在'sed'中,您需要用反斜槓將其轉義。查看更新後的答案。 – January