将字符串添加到特定行号的文件

问题描述:

我想在Linux中的特定行号处添加一个字符串到文件。我搜查,发现像这样的命令:将字符串添加到特定行号的文件

sed "5i helloworld" test.txt 

在5号线加helloworld,但我得到了一个错误:

sed: command garbled.

似乎对sed的Solaris不支持选项-i。我在这里测试RedHat。有没有其他的命令可以在这里使用?任何其他方式?

+1

您正在使用Linux或Solaris? – miken32

+0

@ miken32 linux在这里。 – Richard

+0

那么你会有什么工作,你为什么提到Solaris? – miken32

如何键入命令如i,ac,旧版seds有点挑剔。尝试实际续行:

sed '5i\ 
helloworld' test.txt 

i text语法是GNU扩展。 POSIX sed只知道带有换行符的i\版本。

另外,注意有和-i选项(就地编辑)关于sed i命令 (插入文本)之间的差。


或 “功能”。

+1

_可选reading_:总结术语对话:[_POSIX_ spec](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html)和[_BSD_ Sed m​​an page](https:/ /www.freebsd.org/cgi/man.cgi?query=sed&sektion=&n=1)调用脚本中可用的功能单元 - 例如'i' - 一个_function_和一个_instance of calling_这样的单元(名称函数加上它的参数)_command_。相比之下,[_GNU_ Sed的手册页](https://www.gnu.org/software/sed/manual/sed.html#Common-Commands)并未作出此区分,而_only_使用术语_command_。 – mklement0

+0

感谢您的意见。现在它适用于我。 – Richard

这里是awk解决方案:

awk 'NR==5{1;print "Hey there this is new text added on line 5"}1' inputfile 
+0

我看到错误:awk:第1行附近的语法错误 awk:靠近第1行救助 – Richard

+0

@Richard对'awk'版本'GNU Awk 3.1.7'正常工作。你确定它相同或更高? –

+0

感谢您的信息。而且我看到我也有可用的gawk命令。我的gawk是GNU Awk 4.1.0,API:1.0。所以把你的命令改为gawk为我工作。所以命令--- gawk'NR == 5 {1; print“嘿,这是在第5行添加的新文本”} 1'测试---在我的服务器上正常工作。我在我的服务器上看到awk和gawk。之前没有注意到gawk。 – Richard