在Linux中的某一行添加文本到文件

我想添加一个特定的行,可以说avatar的文件以MakeFile开头, avatar应该被添加到文件的第15行。

这是如何添加文本到文件:

 echo 'avatar' >> MakeFile.websvc 

这是如何将文本添加到以MakeFile开头的文件我认为:

 echo 'avatar' >> *MakeFile. 

但是我不能设法将这一行添加到文件的第15行。

Solutions Collecting From Web of "在Linux中的某一行添加文本到文件"

你可以使用sed来解决这个问题:

 sed "15i avatar" Makefile.txt 

或使用-i选项保存对文件所做的更改。

 sed -i "15i avatar" Makefile.txt 

要更改所有启动Makefile的文件,请执行以下操作:

 sed "15i avatar" Makefile* 

注意:在上面的15是你的兴趣线放置文本。

使用sed:

 sed -i '15i\avatar\' Makefile* 

其中-i选项表示转换就地发生(这对于处理多个文件时很有用)。

另外,在你的问题中,* MakeFile代表“以MakeFile结尾的所有文件”,而“以MakeFile开头的所有文件”将被表示为MakeFile *。

如果您需要将字符串和行号选项传递给脚本,请尝试以下操作:

 perl -i -slpe 'print $s if $. == $n; $. = 0 if eof' -- -n=15 -s="avatar" Makefile* 

-i编辑输入文件,不要做备份
$. 是行号

这是基于我的解决方案在特定的行号插入一行sed或awk ,其中包含其他几种传递选项到Perl的方法,以及命令行选项的解释。

如果你想要一个更便携的版本,你可以使用ex ,它可以在任何 * Nix系统上运行。 ( 由POSIX指定 )迄今给出的Sed命令取决于GNU Sed。

要在当前目录中名称以“Makefile”开头的每个文件的第15行插入一行除“avatar”外的行,请使用:

 for f in MakeFile.*; do printf '%s\n' 15i 'avatar' . x | ex "$f"; done 
 perl -pi -e 'if($.==14){s/\n/\navatar\n/g}if(eof){$.=0}' MakeFile*