Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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
Linux 如何在bash中将sed命令与几个斜杠一起使用_Linux_Bash_Shell_Awk_Sed - Fatal编程技术网

Linux 如何在bash中将sed命令与几个斜杠一起使用

Linux 如何在bash中将sed命令与几个斜杠一起使用,linux,bash,shell,awk,sed,Linux,Bash,Shell,Awk,Sed,我试图将SED命令与包含多个/的变量一起使用,但出现以下错误: sed: -e expression 1, char 16: unknown option to s 这是我的代码,在脚本中: thispath=$(readlink -f $0) sudo sed -i '13s/^/'"$thispath"'/g' /etc/rc.local 变量包含例如:/home/user/script.sh 我不太清楚sed的用法。有人能帮我吗?s命令是sed,它允许您使用任何字符来分隔正则表达式和替

我试图将SED命令与包含多个
/
的变量一起使用,但出现以下错误:

sed: -e expression 1, char 16: unknown option to s
这是我的代码,在脚本中:

thispath=$(readlink -f $0)
sudo sed -i '13s/^/'"$thispath"'/g' /etc/rc.local
变量包含例如:
/home/user/script.sh
我不太清楚sed的用法。有人能帮我吗?

s命令是sed,它允许您使用任何字符来分隔正则表达式和替换部分。“/”通常是一个糟糕的选择,因为您在UNIX路径中经常遇到它:

尝试:


直接在rc.local上执行此操作是危险的。你可以在S命令中使用一个不同的定界符。例如:“代码> SED的AsAB ab cd,g‘g’/CODE。只需知道它只是一个创可贴,当文本包含<代码>:< /代码>或<代码>和<代码>或<代码> 1 或一些其他字符/字符串,SED将其解释为文字字符以外的其他字符时,将失败。在进行备份时,您还可以在
-i
开关中添加后缀,例如
-i.bak
,以便根据您答案中的代码创建一个后缀。@EdMorton我想
awk-v str=“$var”NR==13{printf“%s”,str}1”文件可以解决定界符问题,但是它有点复杂,如果没有最近的一次呆呆的观察,它无法处理就地编辑。是的,通常情况下,它是在简洁和健壮之间进行选择。要为此使用sed,请参见。
sudo sed -i '13s:^:'"$thispath"':g' /etc/rc.local