Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash sed-i使用尾部反斜杠更新_Bash_Shell_Unix_Sed_Bin - Fatal编程技术网

Bash sed-i使用尾部反斜杠更新

Bash sed-i使用尾部反斜杠更新,bash,shell,unix,sed,bin,Bash,Shell,Unix,Sed,Bin,我想运行以下命令: sed -i -e "s/\($user hard nproc \).*/\1{value here ending with /}/" /etc/something.conf 这里,{value here结尾为/}类似于100/或abc/ 但是,如果我只是提出/喜欢: sed -i -e "s/\($user hard nproc \).*/\1abc//" /etc/something.conf 我得到这个错误: “s”的未知选项 我一直在努力解决这个问题,但想不出任何

我想运行以下命令:

sed -i -e "s/\($user hard nproc \).*/\1{value here ending with /}/" /etc/something.conf
这里,{value here结尾为/}类似于100/abc/

但是,如果我只是提出/喜欢:

sed -i -e "s/\($user hard nproc \).*/\1abc//" /etc/something.conf
我得到这个错误: “s”的未知选项

我一直在努力解决这个问题,但想不出任何解决办法

基本上,我要做的是更新我的旧值 “用户名硬nproc 10” 至“用户名硬nproc 10**”
使用“
**”

时,您需要转义尾部的斜杠,或者为表达式使用其他字符。i、 e:

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


您需要对尾部斜杠进行转义,或者对表达式使用其他字符。i、 e:

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


以下简单的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**

同样,您也可以在这里提及您的输入_文件,尽管这里有echo。如果您想保存对输入文件本身的更改,也可以使用
-i
sed的
-i
选项(我建议您在不更改输入文件的情况下运行上述代码,然后在对结果满意后使用
-i
选项运行)。

下面的简单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**

同样,您也可以在这里提及您的输入_文件,尽管这里有echo。如果您想保存对输入文件本身的更改,也可以使用
-i
选项
sed
(我建议在不更改输入文件的情况下运行上述代码,然后在对结果满意后使用
-i
选项运行)。

在sed中,无论何时,如果要使用妨碍用于命令的
/
/
执行某些操作,最简单的方法是为命令使用不同的分隔符。例如:

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

会很好用的
s/pattern/repl/flags
只是一种惯例,您也可以使用
s@pattern@repl@flags

在sed中,每当您想使用一个妨碍命令所用的
/
/
执行某些操作时,最简单的方法就是为命令使用不同的分隔符。例如:

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

会很好用的
s/pattern/repl/flags
只是一种惯例,您也可以使用
s@pattern@repl@flags

欢迎来到Stack overflow,您的问题不清楚。请在代码标签中发布带有预期输出文件的示例输入文件,然后让我知道。相应更新。欢迎使用堆栈溢出,您的问题不清楚。请在代码标记中发布带有预期输出文件的示例输入\文件,然后让我知道。相应更新。@教父,请看这个,一旦你在堆栈溢出中得到问题的答复,该怎么办@goddave,请看这个,一旦你在堆栈溢出中得到问题的答复,该怎么办