如何在关键字搜索匹配后在一行前添加注释(#)

dav*_*ave 2 shell aix sed

我有一个crontab文件包含许多数据库名称,如

10 06 1 * *   script  DEVE_DB1 
10 06 1 * *   script  TEST_DB1 
10 06 1 * *   script  PROD_DB1 
....
Run Code Online (Sandbox Code Playgroud)

我想在整个文件的#前面添加注释,TEST_DB1以便我的cron作业不会运行所有TEST_DB1作业.

我在这个网站上找到了以下脚本, sed -e '/TEST_DB1/, s/^/#/'

但是我收到一个错误:

sed: 0602-404 Function /TEST_DB1/, s/^/## / cannot be parsed.

任何建议将不胜感激.

Jon*_*ler 8

丢失逗号(空格是可选的):

sed -e '/TEST_DB1/s/^/#/'
Run Code Online (Sandbox Code Playgroud)

在开始时/TEST_DB1/,,sed将期望在范围中找到第二个地址,例如数字$,或其他模式.在s不适合任何这些结构的,因此错误.

  • @Chimera,你可能想要'sed'...'<file> new && mv new file` - 使用&&而不是分号.然后,如果sed cmd失败,原始文件将不会被覆盖. (3认同)
  • 所以要一次完成所有操作:sed -e'/ TEST_DB1/s/^ /#/'<crontab-file> crontab-file.new; mv crontab-file.new crontab-file (2认同)