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

Tim*_*ham 32 sed awk text-processing

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

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

Kev*_*vin 22

awk 'NR==1{print; print "new line"} NR!=1'
Run Code Online (Sandbox Code Playgroud)

  • 短一点:`awk 'NR==2 {print "new line"} 1'` (12认同)

ang*_*gus 16

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

sed '1 { P ; x }' your-file
Run Code Online (Sandbox Code Playgroud)

说明:在第1行,执行以下操作

  1. P RINT行
  2. e x用持有空间改变模式空间(基本上清空缓冲区)

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


如果要添加新行而不是新行字符(我最初理解的),则只需使用sed's 命令a\(追加):

sed '1 a\
appended line' your-file
Run Code Online (Sandbox Code Playgroud)

甚至

sed '1 aappended line' your-file
Run Code Online (Sandbox Code Playgroud)

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


Nik*_*ley 8

我想sed方法是:

sed '2 i whatever_line_of_text_you_wanted_to_INSERT' filename.txt

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

请注意,使用append mode,如果必须的话,它必须使用第一行,因为附加将发生在记录的行号之后。

sed '1 a whatever_line_of_text_you_wanted_to_INSERT' filename.txt