我的sysctl.conf文件中有这个文本块。
#begin_atto_network_settings
net.inet.tcp.sendspace=1048576
net.inet.tcp.recvspace=1048576
net.inet.tcp.delayed_ack=0
net.inet.tcp.rfc1323=1
#end_atto_network_settings
我需要在#end_atto_network_settings之前插入以下三行。
kern.ipc.maxsockbuf=2097152
net.link.generic.system.sndq_maxlen=512
net.classq.sfb.allocation=100
我假设有一些sed命令的变体?
答案 0 :(得分:2)
如果您想编辑该文件,可以使用标准编辑器ed
:
ed -s file <<EOF
1,/#end_atto_network_settings/i
kern.ipc.maxsockbuf=2097152
net.link.generic.system.sndq_maxlen=512
net.classq.sfb.allocation=100
.
w
q
EOF
请注意,编辑文件不会更改权限并保留符号链接; sed -i
通常会创建一个临时文件,删除旧文件并重命名临时文件:因此它不会保留权限和符号链接。
答案 1 :(得分:1)
如果要在模式之前插入行:
sed '/end_atto_network_settings/i \
kern.ipc.maxsockbuf=2097152 \
net.link.generic.system.sndq_maxlen=512 \
net.classq.sfb.allocation=100' file
或者,如果您的文件在EOF处没有空行:
sed '$ i\
kern.ipc.maxsockbuf=2097152 \
net.link.generic.system.sndq_maxlen=512 \
net.classq.sfb.allocation=100' file
含义:
$
- 文件结束,
i
- 插入,
\
- 新行分隔符