所以,我想在.txt中插入测试,但是当我尝试时
type file1.txt >> file2.txt
并使用cygwin和sort file1 | uniq >> sorted
对其进行排序,它会将其放在文件的末尾。但我想把它写到文件的开头。我不知道这是否可以在cmd中使用,如果不是,我也可以在linux终端中执行此操作。
我需要使用特殊标志或操作符吗?
感谢Davin
编辑:文件本身(我写的文件)大约5GB,所以每次我想要改变任何东西时我都要写5GB文件
答案 0 :(得分:0)
无法写入文件的开头。您只能使用提供的内容替换文件内容或将其附加到文件末尾。因此,如果您需要在sorted
文件前面添加已排序的输出,则必须这样做:
mv sorted sorted.old
sort file1 | uniq > sorted
cat sorted.old >> sorted
rm sorted.old
这不是shell的限制,而是几乎所有现有操作系统的文件API。文件的大小只能在最后更改,因此您可以增加它,在这种情况下文件将在最后增长(所有内容保持不变,但现在内容后面有空格)或者您可以截断它(在这种情况下,内容在结尾处被切断)。可以在文件中复制数据但是没有系统功能可以做到这一点,你必须自己做,这几乎和上面显示的解决方案一样低效。