我想运行这个:
sed -i -e "s/\($user hard nproc \).*/\1{value here ending with /}/" /etc/something.conf
此处,{值此处以/结尾的值类似于 100 / 或 abc /
然而,如果我只是/喜欢:
sed -i -e "s/\($user hard nproc \).*/\1abc//" /etc/something.conf
我收到此错误: 's'的未知选项
我一直在努力解决这个问题,但想不出任何解决方案......
基本上我要做的是更新我的旧值 “用户名硬nproc 10 ” 到“用户名硬nproc 10 **” 用“ **”。
答案 0 :(得分:0)
您需要转义尾部斜杠或为表达式使用不同的字符。即:
sed -i "s/\($user hard nproc \).*/\1abc\//" /etc/cgrules.conf
或
sed -i "s#\($user hard nproc \).*#\1abc/#" /etc/cgrules.conf
答案 1 :(得分:0)
以下简单的sed对我很有用。
echo "username hard nproc 10" | sed 's/username hard nproc 10/username hard nproc 10**/g'
username hard nproc 10**
假设您希望将这些值旧的和新的变量放入变量中,然后跟随它们可能有助于yon。
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,尽管这里有回声。如果你想保存Input_file本身的更改,也可以使用-i
的{{1}}选项(我建议在不对Input_file进行更改的情况下运行上面的代码,然后在满意后使用sed
选项运行结果)。
答案 2 :(得分:0)
在sed中,无论何时你想要使用/
来阻止用于命令的/
,最简单的方法是为命令使用不同的分隔符。例如:
sed -e "s@\($user hard nproc \).*@\1{value here ending with /}@"
工作得很好。 s/pattern/repl/flags
只是一个惯例,您也可以使用s@pattern@repl@flags