Bash Sed似乎可以工作,但文件不工作';不变
基于: 我想修改我的Bash Sed似乎可以工作,但文件不工作';不变,bash,sed,Bash,Sed,基于: 我想修改我的sysctl.conf文件。包含PermitTunnel something的行必须更改为PermitTunnel point-to-point 因此,正如一位男士之前在帖子中所说,我会使用: sed -e 's/PermitTunnel.*$/PermitTunnel point-to-point/g' 包括在我的文件行的末尾 由于未使用-n,我想我应该在标准输出时收到我的操作结果。然后我执行了它并获得(注意,我使用的是-2-而不是-to-,只是为了查看是否可以根据需要修
sysctl.conf
文件。包含PermitTunnel something
的行必须更改为PermitTunnel point-to-point
因此,正如一位男士之前在帖子中所说,我会使用:
sed -e 's/PermitTunnel.*$/PermitTunnel point-to-point/g'
包括在我的文件行的末尾
由于未使用-n
,我想我应该在标准输出时收到我的操作结果。然后我执行了它并获得(注意,我使用的是-2-
而不是-to-
,只是为了查看是否可以根据需要修改文件,因为在这种情况下文件已经有了所需的行):
但我会:
root@debian:/home/dit# cat /etc/sysctl.conf | grep PermitTunnel
PermitTunnel point-to-point
如您所见,该文件没有更改。我做错了什么
感谢阅读您的命令将sysctl.conf作为输入,stdout作为输出。您必须使用
-i
选项替换“就地”
还可以为备份文件指定后缀:
sed -i.bak -e 's/PermitTunnel.*$/PermitTunnel point-2-point/g'/etc/sysctl.conf
来自man sed:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if extension supplied)
或者,您可以将标准输出重定向到新文件:
sed -e 's/PermitTunnel.*$/PermitTunnel point-2-point/g'/etc/sysctl.conf > /etc/sysctl.conf.new
完全一样。不投票关闭,因为它将自动关闭。有关信息,在某些版本的sed(特别是BSD)中,
-i
标志的参数是强制性的,而不是可选的。
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if extension supplied)
sed -e 's/PermitTunnel.*$/PermitTunnel point-2-point/g'/etc/sysctl.conf > /etc/sysctl.conf.new