在文件的最后一行之前追加三个新行
Appending three new lines before the last line in a file
我的 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 命令的一些变体?
如果你想编辑你可以使用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
通常会创建一个临时文件,删除旧文件并重命名临时文件:因此它不会保留权限和符号链接。
如果你想在模式前插入行:
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
- 插入,
\
- 新行分隔符
我的 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 命令的一些变体?
如果你想编辑你可以使用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
通常会创建一个临时文件,删除旧文件并重命名临时文件:因此它不会保留权限和符号链接。
如果你想在模式前插入行:
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
- 插入,
\
- 新行分隔符