echo>>样式追加,但到文件的开头

时间:2012-05-23 14:04:51

标签: shell unix

在UNIX shell中有什么好的技巧可以将行追加到文件的开头吗?例如。类似于

   echo "Foobar" >> file.txt

...但新线路会先于现有线路吗?

3 个答案:

答案 0 :(得分:10)

分2步:

content=$(cat file.txt) # no cat abuse this time
echo -en "foobar\n$content" >file.txt

答案 1 :(得分:6)

这是非标准的,但如果你的sed支持-i,你可以这样做:

sed -i '1i\
Foobar' file.txt

答案 2 :(得分:3)

我会保持简单。最简单也可能是最快的解决方案很简单:

(echo "Foobar"; cat file.txt) >tmpfile
cp tmpfile file.txt
rm tmpfile

如果file.txt的inode发生变化并不重要,请将“cp”替换为“mv”。一个明显快于此速度的解决方案是不可能的,因为Unix文件系统语义不支持预先添加到文件中,只是附加。