2016-10-03 70 views
0

我試圖匹配#key = *這樣的模式,並使用sed和正則表達式替換爲key = 1如何匹配和替換鍵/值表達式與sed

這是我的命令:

sed -r -e "s/#\s*key\s*=\s*[^\n]*/key\s*=\s*1/g /tmp/test.txt" 

,但它給我的錯誤:

sed: -e expression #1, char 38: unknown option to `s' 

這是什麼意思?我該如何解決呢?

+0

向我們顯示您的輸入數據。 – blackpen

回答

1

輸入文件名不是-e的一部分,它應該是一個單獨的參數。

此外,輸出中的\s不會創建空格,但可以從(...)的輸入中捕獲空白,並將其輸出到相應的\N

sed -r -e 's/#(\s*)key(\s*)=(\s*).*/key\2=\31/g' /tmp/test.txt 
0
$ echo '#key = *' | sed -r -e 's/#\s*key\s*=\s*[^\n]*/key = 1/' 
key = 1 

這是你所期望的嗎?