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

时间:2015-07-28 10:51:00

标签: bash perl awk sed

我在许多文件中都有关于时间戳的评论:

/****** Object:  StoredProcedure [dbo].[some_stored_procedure]    Script Date: 07/28/2015 11:01:13 ******/

我想用空注释替换它们

/* */

我知道评论是在每个文件的第3行。我可以使用awk '!(NR==3)'将其删除,但我想将行号保留在文件中,因此我想添加一个空注释。怎么做?

2 个答案:

答案 0 :(得分:4)

您可以使用:

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

<强>解释

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

的更多步骤

1:打印当前行。

如果您可以访问现代gawk实施,则可以

Inplace 替换:

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

检查:http://www.gnu.org/software/gawk/manual/html_node/Extension-Sample-Inplace.html

答案 1 :(得分:3)

(c)改变第3行

$("#CopyNews").dialog( "close" );

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

可能会添加一些安全性

sed '3 s#.*#/* */#' YourFile > NewFile

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

开头,请更改第3行