使用Linux在特定位置添加一行并输出到同一文件?

时间:2017-09-26 16:04:48

标签: linux bash sed

如何在file.txt中添加第三行:

             line 1
             line 2
             line 4

sed可以用sed '3iline 3' file.txt,但我想输出到同一个文件。 我尝试了sed '3iline 3' file.txt >> file.txt,但没有成功。它确实添加了行,但它重复了file.txt,我得到了这个:

       line 1
       line 2
       line 4
       line 1
       line 2
       line 3
       line 4

1 个答案:

答案 0 :(得分:2)

执行此操作的唯一方法是写入第二个文件,然后替换原始文件。您只能追加到任意文件;你不能插入一个中间。

t=$(mktemp)
sed '3iline 3' file.txt > "$t" && mv "$t" file.txt

如果您的sed版本支持它,您可以使用-i选项自动处理临时文件。

sed -i '3iline 3' file.txt  # GNU
sed -i "" '3iline 3 ' file.txt  # BSD sed requires an argument for -i