如何从命令行写入文件的第二行?

如何从命令行写入文件的第二行?

我有一个外部程序可以生成一个输出文件(较大,可能有 20K 行)。

我需要在现有的第 1 行和第 2 行之间插入一个新行。我一直在研究 awk 和 sed - 我经常在每个中使用一个衬垫 - 但我一直无法想出正确的开关来做这个。

答え1

awk 'NR==1{print; print "new line"} NR!=1'

答え2

对于您的具体情况,这应该更简单:

sed '1 { P ; x }' your-file

解释: 在行1, 请执行下列操作

  1. 打印该行
  2. X用保持空间更改模式空间(基本上清空缓冲区)

然后,作为循环的一部分,再次打印该行(现在为空)。


如果你想添加一个新队代替新行字符(我最初的理解)然后只需使用sed的命令a\(附加):

sed '1 a\
appended line' your-file

甚至

sed '1 aappended line' your-file

它在第 1 行之后附加“ appended line”。

答え3

我想该sed方法是:

sed '2 i whatever_line_of_text_you_wanted_to_INSERT' filename.txt

这会将文本放入文件的第二行,然后文件中的实际第二行将成为第三行。

请注意,使用附加模式,如果必须如此,则必须使用第一行,因为追加将发生在记录的行号之后。

sed '1 a whatever_line_of_text_you_wanted_to_INSERT' filename.txt

答え4

sed ':a;N;$!ba;s/\n/\n\n\n/' yourBigFile

解释。

関連情報