簡體   English   中英

Ubuntu 9.04中Sed命令的正則表達式語法錯誤

[英]Regex syntax error with Sed command in Ubuntu 9.04

我有這樣的sed命令:

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文件中的密鑰替換秘密值。 例如,如果密鑰為00000000000000000000000000000000000002,則應按以下方式更改clients.conf的內容:

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

該腳本適用於armv5tejl的OpenWRT姿態調整r35400,但是,它在Ubuntu 9.04中無法正常工作,並顯示以下錯誤: sed:-e表達式#1,char 36:命令后有多余字符

在這種情況下,有人可以幫我嗎?

我認為您需要添加一個; 在命令n和命令s ,像這樣

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

這在我的cygwin環境中工作。

您需要用分號分隔命令塊中的命令,因此請添加;。 在n命令之后將其與以下命令分開。

像這樣:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM