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
我想将特定行添加到特定行号(第二行)的文件中,而不覆盖已经存在的数据。
我试过这个:
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