linux - 在文件的最后一行之前添加三行新行

标签 linux bash sed cat

我的 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

请注意,编辑文件不会更改权限并保留符号链接(symbolic link); sed -i 通常会创建一个临时文件,删除旧文件并重命名临时文件:因此它不会保留权限和符号链接(symbolic link)。

关于linux - 在文件的最后一行之前添加三行新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33001912/

相关文章:

PHP:执行命令,然后继续?

bash - 通过 Plink 在 Windows 命令行上运行 shell 脚本(带参数)

bash - 如果任何命令失败,如何撤消 "set -e"使 bash 立即退出的效果?

linux - 从 BASHRC 解析函数

bash - 打印文件中的第一个和最后一个匹配项

linux - DNS A记录和PTR记录删除

linux - lua 和 env lua 的区别?

c++ - 使用 C++ 动态分配/dev/ttyUSB*

python - 可以在编程语言的命令行窗口中定义函数吗?

linux - 使用 AWK 或 SED 以及以下标签以逗号分隔