Linux: 如何在文件的特定行号处插入一行?

Linux: How to insert a line at a specific line number in a file?

我想将特定行添加到特定行号(第二行)的文件中,而不覆盖已经存在的数据。

我试过这个:

sed -i '2i - jstat' FILE

但这只是用“-jstat”覆盖了第二行。

相反,我想添加一个新的第二行并将下一行推到第 3 行。 假设文件看起来像这样:

[root@puppet roles]# head -5 !$
head -5 buncher.yaml
classes:
  - workspace
  - fstab
  - role_specific

我想在第二行添加一个新模块,我希望 "workspace" 模块成为第三行。

除此之外,我希望新行以 2 个字符的制表符大小开始,然后是“- jstat”,如:"TabTab - jstat",如何实现?

好吧,要在行号 x 之后插入一行,您可以使用下面的 sed 命令:

sed 'x i\LINE_TO_ADD' filename > temp_file
mv temp_file filename

这里是添加<TAB><TAB>Hello How are you!tempfile的例子,其内容是:

123
234
345

为了在第 2 行之前添加,我编写了以下 sed 命令:

sed '2 i\t\tHello How are you!' tempfile > temp_file
mv temp_file tempfile

tempfile的最终内容是:

123
<TAB><TAB>Hello How are you!
234
345

有关更多详细信息,请尝试参考此 Sed tutorial