簡體   English   中英

Bash排序重定向

[英]Bash Sorting Redirection

sort file1 -o file2sort file1 > file2什么區別? 到目前為止,我做的事情與他們做的事情相去甚遠,但也許我錯過了一些事情。

只要file1file2不同,以下兩個命令是相似的。

sort file1 -o file2    # Output redirection within sort command
sort file1 > file2     # Output redirection via shell

讓我們看看當輸入和輸出文件是同一file時發生的情況,即您嘗試就地排序

sort file -o file      # Works perfectly fine and does in-place sorting
sort file > file       # Surprise! Generates empty file. Data is lost :(

綜上所述, 以上兩種重定向方法相似但不相同

測試

$ cat file
2
5
1
4
3
$ sort file -o file
$ cat file
1
2
3
4
5
$ sort file > file
$ cat file
$ ls -s file
0 file

結果是相同的,但是在-o file2情況下,結果文件是直接通過sort創建的,在其他情況下,文件是由bash創建的,並用sort的標准輸出填充。 所述xfopen在450行中定義sort.c中的coreutils治療這兩種情況下( stdout-o filename )同樣。

重定向sort的標准輸出更為通用,因為可以使用|重定向到另一個程序| 代替> ,它使-o選項變得更難(但並非不可能)

-o選項對於就地排序很方便,因為重定向到同一文件將導致文件被截斷,因為它是由shell在調用sort之前創建(和截斷)的。

沒有太大區別>是標准的UNIX輸出重定向功能。 這就是說“將您將在終端上顯示的輸出寫入給定文件” -o選項更特定於排序功能。 這是一種再次說“將輸出寫入此給定文件”的方法

>可以用於沒有專門寫入文件參數或選項的工具。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM