如何將兩個檔案連接成一個新檔案並對輸出進行排序

如何將兩個檔案連接成一個新檔案並對輸出進行排序

我有兩個文件,其中包含一些名稱,當我運行時cat file1 file2 | sort,終端顯示按字母順序排序的名稱,但是當我運行時,cat file1 file2 > file3 | sort我看不到排序的輸出,為什麼?

答案1

您已經將file1和的輸出重新導向file2到新檔案file3

使用此命令cat file1 file2 > file3 | sortsort在管道之後。

這可以如下驗證。

cat file1
A
Z
B
cat file2
F
G
C

現在,當我運行命令時,我們可以看到和cat file1 file2 > file3 | sort的內容已寫入,但未排序。file1file2file3

我相信你想要實現的目標可以很容易實現,因為,

cat file1 file2 | sort > file3

但是,它不會在控制台視窗中顯示輸出。

如果您需要將排序後的兩個文件的輸出寫入一個新文件,同時排序後的輸出可在控制台中使用,您可以執行以下操作。

cat file1 file2 | sort > file3; cat file3

tee不過,在這種情況下使用它是很好的。tee可以有效地用作,

cat file1 file2 | sort | tee file3

上面的命令基本上連接了 2 個檔案並對它們進行排序並在控制台中顯示輸出,同時將管道的輸出寫入使用命令指定的新檔案tee

作為用戶凱西指出,如果您zsh的系統上有可用的 shell,您也可以使用以下命令。

sort <file1 <file2 | tee file3

答案2

POSIX 定義了該sort實用程式的用途:

對所有指定檔案的行進行排序並將結果寫入指定的輸出。

您可以將兩個文件排序為一個串聯的輸出文件,例如:

sort $opts file1 file2 >output_file

如果你想在你的 shell 上看到輸出stdout 將結果保存在輸出檔案中,然後使用tee

sort $opts file[12] | tee output_file

相關內容