Bash 如何插入特定行而不是第n行?

Bash 如何插入特定行而不是第n行?,bash,perl,awk,sed,Bash,Perl,Awk,Sed,我在许多文件中都有一条带有时间戳的注释: /****** Object: StoredProcedure [dbo].[some_stored_procedure] Script Date: 07/28/2015 11:01:13 ******/ 我想用一句空话来代替它们 /* */ 我知道评论在每个文件的第三行。我可以用awk'移除它!NR==3'但是我想在文件中保留行号,所以我想添加一个空注释。如何做到这一点?您可以使用以下方法: awk 'FNR==3{print "/* */

我在许多文件中都有一条带有时间戳的注释:

/****** Object:  StoredProcedure [dbo].[some_stored_procedure]    Script Date: 07/28/2015 11:01:13 ******/
我想用一句空话来代替它们

/* */
我知道评论在每个文件的第三行。我可以用awk'移除它!NR==3'但是我想在文件中保留行号,所以我想添加一个空注释。如何做到这一点?

您可以使用以下方法:

awk 'FNR==3{print "/* */";next}1'  file > new_file
解释

FNR==3{print/**;next}:当到达字段的第三行时,打印void comment并按next跳过进一步的步骤

1:打印当前行

如果您可以访问现代gawk实现,则可以进行就地更换:

gawk -i inplace 'FNR==3{print "/* */";next}1'  file 
选中:

您可以使用此选项:

awk 'FNR==3{print "/* */";next}1'  file > new_file
解释

FNR==3{print/**;next}:当到达字段的第三行时,打印void comment并按next跳过进一步的步骤

1:打印当前行

如果您可以访问现代gawk实现,则可以进行就地更换:

gawk -i inplace 'FNR==3{print "/* */";next}1'  file 
检查:

更改第3行

sed '3 c\
/* */' YourFile > NewFile

也许可以增加一些安全性

sed '3 { \#^[[:blank:]]*/[*]\{1,\}# c\
       /* */
       }' YourFile > NewFile
如果以/**

开头,则更改第3行更改第3行

sed '3 c\
/* */' YourFile > NewFile

也许可以增加一些安全性

sed '3 { \#^[[:blank:]]*/[*]\{1,\}# c\
       /* */
       }' YourFile > NewFile

如果以/**

开头,则更改第3行;或者,perl-i-ple'$\u=/**/if$。==3'file.Yep,这将是我选择的用于就地替换@melpomenealternative的工具,perl-i-ple'$\u=/**/if$.==3'file.Yep,这将是我选择的用于就地替换的工具@melpomenesed'3 c/**/'更简单。。。“3 c/**/”要简单得多。。。谢谢