gpt4 book ai didi

linux - 如何使用 Sed 仅注释掉未注释的行并 100% 完整保留空白/空行?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:49:52 28 4
gpt4 key购买 nike

我正在整理一些 Bash 配置脚本来配置 Linux 服务器,我希望能够对文件中所有未注释的行进行注释,但保留空白/空行完好无损。

使用 the great answer to this question我能够想出这个 Sed one liner,效果很好:

sed -e '/^#/!s/\(.*\)/# \1/g' /etc/update-motd.d/90-updates-available

当然,当我在生产设置上运行此 Sed 命令时,-e 将与 -i 交换以将文件写入到位,但无论如何内容该文件成功被注释掉,如下所示:

#!/bin/sh
#
# if [ -x /usr/lib/update-notifier/update-motd-updates-available ]; then
# exec /usr/lib/update-notifier/update-motd-updates-available
# fi

但理想情况下,我希望输出是这样的;注意一个空白/空行是如何保持不变的。:

#!/bin/sh

# if [ -x /usr/lib/update-notifier/update-motd-updates-available ]; then
# exec /usr/lib/update-notifier/update-motd-updates-available
# fi

在 Sed 中有什么方法可以做到这一点吗?

最佳答案

这个怎么样:

sed -e 's/^\([^#].*\)/# \1/g' /etc/update-motd.d/90-updates-available

关于linux - 如何使用 Sed 仅注释掉未注释的行并 100% 完整保留空白/空行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34982602/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com