簡體   English   中英

Unix,按數字排序

[英]Unix, Sort by number

我想通過減少第二列的數量對文件進行排序,但不更改標題的位置。 當前,在csv文件中就像這樣,它具有兩列,如下所示:

Person     Age

Sarah      15

Robert     23

Emma       31

Bob        9

我希望它是這樣的:

Person     Age

Emma       31

Robert     23

Sarah      15

Bob        9

請幫助Unix初學者。

閱讀http://man7.org/linux/man-pages/man1/sort.1.html,以了解UNIX / Linux上的sort命令。 這就是我和其他所有人所學到的。

$ sort --key 2 --reverse --numeric-sort myfile > mysortedfile

唯一的問題是,這會將“ Person Age”(行人年齡)的行排序為數字值零,然后將其移動到文件的最后一行。 然后,您必須在對文件進行排序后移動該行。

除了刪除空行,這將達到目的。

sed -n'1! p'sortme.txt | sort --key 2 --reverse --numeric-sort | sed'1 i \\ Person \\ tAge'> sorted.txt

〜帕特

要解決Bills答案中概述的“最前面的標題”問題,除了sort之外,還可以使用awk

awk 'NR==1 {print ; next } { print | "sort -n -r -k2"  }' yourfile > sorted_file
  • 條件NR==1僅適用於第一行:打印
  • 所有其他行都通過管道傳遞給sort命令(您可以在awk本身中進行排序,但這會更長一些)

暫無
暫無

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

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