2015-05-14 32 views
0

我有sed命令是這樣的:與在Ubuntu桑達命令的正則表達式語法錯誤9.04

radius_clientsfile=clients.conf 
iface_netsize="/64" 
wireless_prefix=fd04:bd3:80e8:3:: 
sed -i "/client $wireless_prefix\\$iface_netsize/ {n s/\(\W*secret\W*=\W\).*/\1$key/}" $radius_clientsfile 

clients.conf具有這樣的內容:

client fd04:bd3:80e8:3::/64 { 
    secret  = 00000000000000000000000000000001 
} 

其目的是取代的祕密值通過鍵入clients.conf文件。例如,如果關鍵是00000000000000000000000000000002,clients.conf的內容應更改如下:

client fd04:bd3:80e8:3::/64 { 
     secret  = 00000000000000000000000000000002 
    } 

本上的OpenWRT調整心態r35400腳本工作armv5tejl 但是,它無法在Ubuntu 9.04與錯誤的工作: sed:-e表達式#1,字符36:命令後的額外字符

任何人都可以幫助我解決這種情況嗎?

回答

0

我認爲你需要我的cygwin環境下添加一個命令n命令s之間;和,這樣

sed -i "/client $wireless_prefix\\$iface_netsize/ {n; s/\(\W*secret\W*=\W\).*/\1$key/}" $radius_clientsfile 

此工作。

0

您需要用分號分隔命令塊中的命令,所以添加一個;在n命令之後將它從以下命令中分離出來。

像這樣:

{n;s/\(\W*secret\W*=\W\).*/\1$key/}