bash: sort应用于文件将返回正确的结果作为终端输出,但会更改文件本身



我正在使用这个命令

sort -k1 -n source-g5.txt

将文件tmp-source-g5.txt (n行,2列)的内容按照第一列的数值排序。
当我运行这一行时,终端打印出所需的结果,但是当我试图将结果保存到同一个文件中时,

sort -k1 -n source-g5.txt > source-g5.txt

文件显示与之前没有区别。我做错了什么?

SOLVED

从这个线程中,事实证明,将sort的输出重定向到sort作为源读取的同一文件将无法工作,因为

shell正在进行重定向(不是sort(1)程序)和输入文件(也作为输出)将在之前擦除给sort(1)程序读取它的机会。

所以我把命令分成两个

sort -k1 -n source-g5.txt > tmp-source-g5.txt
mv tmp-source-g5.txt > source-g5.txt

最新更新