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

Shell 如何在关键字搜索匹配后的行前添加注释(#),shell,sed,aix,Shell,Sed,Aix,我有一个crontab文件包含许多数据库名称,例如 10 06 1 * * script DEVE_DB1 10 06 1 * * script TEST_DB1 10 06 1 * * script PROD_DB1 .... 我想在整个文件的TEST\u DB1前面添加一条注释#,这样我的cron作业就不会运行所有TEST\u DB1作业 我在这个网站上找到了以下脚本, sed-e'/TEST_DB1/,s/^/#/' 但我有一个错误: 无法解析sed:0602-4

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

10 06 1 * *   script  DEVE_DB1 
10 06 1 * *   script  TEST_DB1 
10 06 1 * *   script  PROD_DB1 
....
我想在整个文件的
TEST\u DB1
前面添加一条注释
#
,这样我的cron作业就不会运行所有
TEST\u DB1
作业

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

但我有一个错误:

无法解析sed:0602-404函数/TEST_DB1/,s/^/##/。

如果您有任何建议,我们将不胜感激。

请删除逗号(空格是可选的):


给定start
/TEST\u DB1/,
sed
将期望在一个范围内找到第二个地址,例如数字、
$
或其他模式。
s
不适合这些结构中的任何一个,因此出现了错误。

因此,一次完成所有操作:sed-e'/TEST_DB1/s/^/#/'crontab-file.new;mv crontab-file.new crontab fileOn AIX,是;如果您有GNU
sed
,您可以使用
sed-i-e'/TEST_DB1/s/^/#/“crontab文件
,但这(几乎可以肯定)不能作为AIX
sed
的选项使用。这非常有效。谢谢你们。答案太快了。@Chimera,您可能需要
sed'…new&&mv new file
——使用&&而不是分号。然后,如果sed cmd失败,原始文件将不会被覆盖。
sed -e '/TEST_DB1/s/^/#/'