2017-10-06 77 views
1

我想運行此:{這裏值與/結束}猛砸sed的-i更新斜槓

sed -i -e "s/\($user hard nproc \).*/\1{value here ending with /}/" /etc/something.conf 

這裏,就像是100/ABC/

但是,如果我只是把/ like:

sed -i -e "s/\($user hard nproc \).*/\1abc//" /etc/something.conf 

我得到這個錯誤: 未知的選項'S'

我一直特林解決這個問題,但不能認爲任何解決方案...

基本上我所要做的就是更新我的老值從 「用戶名硬nproc 10」 到「用戶名硬nproc 10 **」 與「 **」。

+0

歡迎來到堆棧溢出,你的問題不清楚。請在代碼標籤中發佈帶有預期輸出文件的示例Input_file,然後讓我知道。相應地更新了 – RavinderSingh13

+0

。 – GodFather

回答

0

您需要轉義結尾斜線或爲表達式使用不同的字符。即:

sed -i "s/\($user hard nproc \).*/\1abc\//" /etc/cgrules.conf 

sed -i "s#\($user hard nproc \).*#\1abc/#" /etc/cgrules.conf 
+0

謝謝。這工作。 – GodFather

+0

@GodFather,看到這個,一旦你在堆棧溢出中得到你的問題的答覆,該怎麼辦https://stackoverflow.com/help/someone-answers – RavinderSingh13

0

下面簡單的sed的工作對我來說很好。

echo "username hard nproc 10" | sed 's/username hard nproc 10/username hard nproc 10**/g' 
username hard nproc 10** 

比方說,你想要這些值新舊變量,然後下面可能會幫助你相同。

old_value="username hard nproc 10" 
new_value="username hard nproc 10**" 
echo "username hard nproc 10" | sed "s/$old_value/$new_value/g" 

輸出如下。

username hard nproc 10** 

同樣,你可以在這裏提到你的Input_file,儘管有echo。如果你想保存Input_file本身的變化(我會建議在Input_file沒有做任何修改的情況下運行代碼,然後在你對結果滿意後用-i選項運行),則還可以使用-i選項sed

0

在sed中,無論何時您想對/執行某些操作(例如/),最簡單的方法就是對該命令使用不同的分隔符。例如:

sed -e "[email protected]\($user hard nproc \).*@\1{value here ending with /}@" 

將工作得很好。 s/pattern/repl/flags只是一個慣例,你也可以使用[email protected]@[email protected]