2011-02-14 65 views
0

我對3個文件執行一個尾部,然後創建一個新文件,當我去排序這個新文件時,它說它無法訪問。所以在代碼$ a中,$ b和$ c是文本文件。那麼我怎麼能得到這個排序新文件?Bash,使用尾部排序

tail -q -n -5 $a $b $c > file.txt 
sort file.txt -o file.txt 

回答

7

嘗試:

tail -q -n -5 $a $b $c | sort > file.txt 
+0

@ user616731:原始文件不起作用的原因是`sort`不能同時讀取和寫入`file.txt`。儘管你也可以使用不同的臨時文件,例如這個答案是實現它的首選方法。 `sort file.txt -o result.txt`。 – 2011-02-14 20:16:21

1

什麼的sort版本?對於GNU coreutils 7.4,它適用於我。

如果你正在做

sort file.txt > file.txt 

它不會工作,因爲重定向將截斷從中讀取sort之前的文件。但是,當我執行strace時,它顯示sort -o直到結束才寫入輸出文件。