0

我有一个用 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

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

4

2 回答 2

1

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

您可能打算执行以下操作:

sort "$OUT" > sorted.txt
cat sorted.txt
于 2016-01-25T20:43:23.673 回答
0

您可以将两个步骤与 结合起来tee,排序后的输出将被写入文件和 STDOUT。

$ sort file | tee sorted_file
于 2016-01-25T21:13:33.547 回答