Sed 似乎可以工作,但文件没有改变
Sed appears to work but file doesn't change
基于:sed: Replace part of a line
我想修改我的 sysctl.conf
文件。包含 PermitTunnel something
的行必须更改为 PermitTunnel point-to-point
.
所以使用之前 post 中一位男士所说的,我会使用:
sed -e 's/PermitTunnel.*$/PermitTunnel point-to-point/g'
在我的文件行的末尾包含。
由于未使用 -n
,我想我应该以标准输出接收我的操作结果。然后我执行它并得到(注意我使用 -2-
而不是 -to-
只是为了看看我是否可以根据需要修改文件,因为在这种情况下文件已经有所需的行):
root@debian:/home/dit# sed -e 's/PermitTunnel.*$/PermitTunnel point-2-point/g'/etc/sysctl.conf
PermitTunnel point-2-point
但后来我做了:
root@debian:/home/dit# cat /etc/sysctl.conf | grep PermitTunnel
PermitTunnel point-to-point
如您所见,文件没有更改。我做错了什么?
感谢阅读
你的命令将sysctl.conf作为输入,标准输出作为输出。您必须使用 -i
选项来替换 "in place"
sed -i -e 's/PermitTunnel.*$/PermitTunnel point-2-point/g'/etc/sysctl.conf
您还可以为备份文件指定后缀:
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: Replace part of a line
我想修改我的 sysctl.conf
文件。包含 PermitTunnel something
的行必须更改为 PermitTunnel point-to-point
.
所以使用之前 post 中一位男士所说的,我会使用:
sed -e 's/PermitTunnel.*$/PermitTunnel point-to-point/g'
在我的文件行的末尾包含。
由于未使用 -n
,我想我应该以标准输出接收我的操作结果。然后我执行它并得到(注意我使用 -2-
而不是 -to-
只是为了看看我是否可以根据需要修改文件,因为在这种情况下文件已经有所需的行):
root@debian:/home/dit# sed -e 's/PermitTunnel.*$/PermitTunnel point-2-point/g'/etc/sysctl.conf
PermitTunnel point-2-point
但后来我做了:
root@debian:/home/dit# cat /etc/sysctl.conf | grep PermitTunnel
PermitTunnel point-to-point
如您所见,文件没有更改。我做错了什么?
感谢阅读
你的命令将sysctl.conf作为输入,标准输出作为输出。您必须使用 -i
选项来替换 "in place"
sed -i -e 's/PermitTunnel.*$/PermitTunnel point-2-point/g'/etc/sysctl.conf
您还可以为备份文件指定后缀:
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