vi 语法注释掉非注释行(cron)

vi 语法注释掉非注释行(cron)

有人知道在 vi 中是否可以用注释替换未注释/非空行吗?

如果我想用我知道的内容替换注释行,我可以使用:%s/^#/##foo##/g——但我正在寻找与此相反的内容。

示例文件:

# Some user's cron

# Test comments
00 00 * * * ~/somescript.sh

预期结果:

# Some user's cron

# Test comments
##DISABLE##00 00 * * * ~/somescript.sh

答案1

:g/^[0-9\*]/s/^/##DISABLED##/

“g/RE/”部分会选择所有以数字或 * 字符开头的行。然后“s/RE/replacement/”会对所有选定的行进行操作。

答案2

:%s/^\([^#]\)/##DISABLE##\1/

答案3


sed -i -e 's/^\([^#]\)/#\1/g' /etc/cronfile

答案4

也许是这样的:

%s/^\([^#]\)\|!\($\)/##FOO##\1/g

我知道所有这些转义都很乱,但是第一部分该行不是以 # 开头[^#],或者(转义的管道\|)不是空的行(^$

相关内容