如何使用shell脚本在空白文件的特定行号处添加行

时间:2016-08-30 06:09:12

标签: linux shell

我在文件

中有以下数据
Line 1

现在我必须在

添加三个新行
line number 3,5,6

但是当我使用

sed -i '3i string1' file
sed -i '4i string2' file
sed -i '6i string3' file

除非数据中包含一些行,否则不附加数据。

但是当该文件为空时,它不会添加数据,因为没有sed可以找到的行号。

所以我怎么能在文件中添加这一行。

2 个答案:

答案 0 :(得分:1)

你可以这样做:

# insert 5 blank lines into the file
printf "\n%.0s" {1..5} >> file

# now use sed to replace desired line numbers
sed -i '3s/^/string1/; 4s/^/string2/; 6s/^/string3/' file

答案 1 :(得分:0)

要接受任何File,并根据需要为其添加新行,以使其至少n行:

awk -i inplace -v n=6 'END{for (i=NR;i<=n;i++) print""} 1' File # GNU awk

或者,

awk -v n=6 'END{for (i=NR;i<=n;i++) print""} 1' File >tmp && mv tmp File # BSD/OSX awk

如果文件已经长n行,则对文件不执行任何操作。

完成此操作后,您的sed命令应该有效。