2016-09-20 50 views
1

這個例子中,看起來像這樣的Linux命令,編輯器和Shell編程Linux的sort命令如何應用後續傳遞給數據?

你有一個文件, 「水果」,它包含以下內容:

Pear 
Pear 
apple 
pear 
Apple 

執行此命令:在這個輸出

sort -u -k 1f -k 1 fruit 

結果:

Apple 
apple 
Pear 
pear 

爲什麼這項工作?如果我只執行了第一關:

sort -u -k 1f fruit 

這導致:

apple 
Pear 

第一遍似乎消除對前者的例子的第二次重新出現莫名其妙線。此外,由於第一次傳球會產生獨特的線條,我預計第二次傳球根本不會發生。

+0

'sort'不是'bash'命令;這是一個單獨的命令,你恰好從'bash'開始。 – chepner

+0

@chepner感謝您的澄清。我修正了標題。 – Bryan

回答

3

通過使用二級排序鍵,您可以告訴排序「如果這些字段是相同的,則使用它來比較它們」。所以,-k1f看到Appleapple等於,所以請致電-k1比較它們。結果不是「相等」,所以-u不會刪除任何內容。

+0

爲什麼第二遍'-k 1',將Apple Apple重新排列爲'apple Apple'? – Bryan

+0

@Bryan:奇怪,但這就是我從'sort -k1f'或'sort -k1f -k1'得到的。 – choroba

+0

@Bryan,無論大寫還是小寫都取決於您的語言的整理順序。如果你設置了'LC_COLLATE = C',那麼它是ASCII順序,並且大寫明確地先出現('A'爲65,而'a'爲97)。如果您不設置LC_COLLATE,則取決於您的語言環境。 –

相關問題