我在文件
中有以下数据Line 1
现在我必须在
添加三个新行line number 3,5,6
但是当我使用
时sed -i '3i string1' file
sed -i '4i string2' file
sed -i '6i string3' file
除非数据中包含一些行,否则不附加数据。
但是当该文件为空时,它不会添加数据,因为没有sed可以找到的行号。
所以我怎么能在文件中添加这一行。
答案 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
命令应该有效。