我想在unix shell中对文件进行排序。我可以将结果重定向到输入文件中吗?
e.g。如果我的输入文件是foo,那么我可以使用
sort foo > foo
或者我应该使用:
sort -o foo foo
上述两个有什么区别?
谢谢,
答案 0 :(得分:9)
使用
sort -o foo foo
来自man
页面:
-o OUTPUT-FILE' Write output to OUTPUT-FILE instead of standard output. If OUTPUT-FILE is one of the input files,
排序'将其复制到 排序和写入输出之前的临时文件 OUTPUT-FILE。
sort foo > foo
表示将输出写入标准输出,该输出被重定向到输出文件。在重定向之前,>
将截断/覆盖输出文件(如果存在)。由于输入和输出文件都相同,因此您将丢失输入文件信息。