不使用临时文件排序文件

sha*_*mpa 4 unix sorting bash shell

我想在unix shell中对文件进行排序.我可以将结果重定向到输入文件中吗?

例如,如果我的输入文件是foo,那么我可以使用

    sort foo > foo   
Run Code Online (Sandbox Code Playgroud)

或者我应该使用:

    sort -o foo foo
Run Code Online (Sandbox Code Playgroud)

上面两个有什么区别?

谢谢,

Pri*_*ley 9

使用

sort -o foo foo
Run Code Online (Sandbox Code Playgroud)

man页面:

-o OUTPUT-FILE' Write output to OUTPUT-FILE instead of standard output. If OUTPUT-FILE is one of the input files,sort'在将输出排序并写入OUTPUT-FILE之前将其复制到临时文件.

sort foo > foo表示将输出写入标准输出,该输出被重定向到输出文件.在重定向之前,>将截断/覆盖输出文件(如果存在).由于输入和输出文件都相同,因此您将丢失输入文件信息.