2017-10-06 31 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]