sort命令有问题多次输出所有内容

时间:2016-01-25 20:40:02

标签: bash sorting lexicographic

我有一个用mktemp制作的临时文件。在脚本退出之前,我必须将文件的内容输出到屏幕。内容必须按字典顺序排序。当我尝试将排序应用于临时文件时,它会多次输出排序结果。 即我的临时文件看起来像没有排序

OUT="$(mktemp)"
#Add lines to $OUT
cat "$OUT"

此输出

../a1q2/hello1.cc
../a1q2/hello2.cpp
../a1q2/hello3.h
../a1q2/hello4.C
../a1q2/z/hi.cc
../a1q2/dir/two.cpp
../a1q2/dir/one.cc
../a1q2/dir/three.h
../a1q2/dir/four.C
../extra/dir/hi.cpp
../extra/dir/hi2.C
../extra/hi.cc
../extra/h2.cc
../extra/h3.h

我想按字典顺序排序,但是当我这样做时

OUT="$(mktemp)"
#Add some lines to $OUT ...
sort "$OUT"
cat "$OUT"

我得到以下输出

../a1q2/dir/four.C
../a1q2/dir/one.cc
../a1q2/dir/three.h
../a1q2/dir/two.cpp
../a1q2/hello1.cc
../a1q2/hello2.cpp
../a1q2/hello3.h
../a1q2/hello4.C
../a1q2/z/hi.cc
../extra/dir/hi.cpp
../extra/dir/hi2.C
../extra/h2.cc
../extra/h3.h
../extra/hi.cc
../a1q2/hello1.cc
../a1q2/hello2.cpp
../a1q2/hello3.h
../a1q2/hello4.C
../a1q2/z/hi.cc
../a1q2/dir/two.cpp
../a1q2/dir/one.cc
../a1q2/dir/three.h
../a1q2/dir/four.C
../extra/dir/hi.cpp
../extra/dir/hi2.C
../extra/hi.cc
../extra/h2.cc
../extra/h3.h

我不知道为什么会这样。任何帮助都将不胜感激

2 个答案:

答案 0 :(得分:1)

sort输出到STDOUT,它不会覆盖您排序的文件。

您可能打算做以下事情:

sort "$OUT" > sorted.txt
cat sorted.txt

答案 1 :(得分:0)

您可以将两个步骤与tee结合使用,已排序的输出将写入文件和STDOUT。

$ sort file | tee sorted_file