使用尾部反斜杠Bash sed -i update

时间:2017-10-06 10:23:16

标签: bash shell unix sed bin

我想运行这个:

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 **” 用“ **”。

3 个答案:

答案 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