您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何使用bash在文件中间添加一行文本?

如何使用bash在文件中间添加一行文本?

这是使用sed的解决方案:

$ sed -n 'H;${x;s/^\n//;s/nameserver .*$/nameserver 127.0.0.1\n&/;p;}' resolv.conf

# Generated by NetworkManager
domain dhcp.example.com
search dhcp.example.com
nameserver 127.0.0.1
nameserver 10.0.0.1
nameserver 10.0.0.2
nameserver 10.0.0.3

工作原理:首先,用-n标志禁止sed的输出。然后,对于每一行,我们将其追加到保留空间,并用换行符将其分隔:

H

当我们到达文件末尾(由寻址$)时,我们将保留空间的内容移至模式空间:

x

如果模式空间中的第一行为空白,则我们将其替换为空。

s/^\n//

然后,我们用包含的行替换第一行,nameserver其中包含nameserver 127.0.0.1新行(您的版本sed可能不支持\n在这种情况下,请n文字换行符替换)和原始行(由表示&):

s/nameserver .*$/nameserver 127.0.0.1\n&/

现在我们只需要打印结果:

p
其他 2022/1/1 18:17:55 有599人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶