8

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

   echo "Foobar" >> file.txt

...但是新行会在现有行之前添加?

4

3 回答 3

10

分两步:

content=$(cat file.txt) # no cat abuse this time
echo -en "foobar\n$content" >file.txt
于 2012-05-23T14:08:57.047 回答
6

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

sed -i '1i\
Foobar' file.txt
于 2012-05-23T14:17:02.973 回答
3

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

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

如果 file.txt 的 inode 更改无关紧要,请将“cp”替换为“mv”。比这快得多的解决方案是不可能的,因为 Unix 文件系统语义不支持附加到文件,只支持附加。

于 2012-05-23T14:40:23.073 回答