【问题标题】:Appending three new lines before the last line in a file在文件的最后一行之前添加三个新行
【发布时间】:2016-02-06 14:32:48
【问题描述】:

我的 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 命令的变体?

【问题讨论】:

  • 类似this 的东西?好像你的问题以前被问过;-)

标签: linux bash sed cat


【解决方案1】:

如果你想编辑文件你可以使用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 通常会创建一个临时文件,删除旧文件并重命名临时文件:因此它不会保留权限和符号链接。

【讨论】:

  • 完美!另外,很高兴知道我确实需要保留权限,谢谢!
【解决方案2】:

如果要在模式前插入行:

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 - 插入, \ - 换行符

【讨论】:

    猜你喜欢
    • 2019-06-13
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    相关资源
    最近更新 更多