在 UNIX shell 中有什么技巧可以将行附加到文件的开头吗?例如类似于
echo "Foobar" >> file.txt
...但是新行会在现有行之前添加?
分两步:
content=$(cat file.txt) # no cat abuse this time
echo -en "foobar\n$content" >file.txt
这是非标准的,但如果你的 sed 支持 -i 你可以这样做:
sed -i '1i\
Foobar' file.txt
我会保持简单。最简单且可能最快的解决方案很简单:
(echo "Foobar"; cat file.txt) >tmpfile
cp tmpfile file.txt
rm tmpfile
如果 file.txt 的 inode 更改无关紧要,请将“cp”替换为“mv”。比这快得多的解决方案是不可能的,因为 Unix 文件系统语义不支持附加到文件,只支持附加。