我在一個檔案中有這些行:
Oct 29 23:14:39
Oct 30 19:45:15
Oct 31 13:15:19
Nov 1 10:34:15
Nov 2 18:39:20
Nov 3 12:34:59
Nov 4 16:34:59
Nov 5 20:34:59
當我運行sort -r -k2時,它給了我以下資訊:
Nov 5
Nov 4
Nov 3
Oct 31
Oct 30
Oct 29
Nov 2
Nov 1
我怎么得到它:
Nov 5
Nov 4
Nov 3
Nov 2
Nov 1
Oct 31
Oct 30
Oct 29
將不勝感激任何指標,評論,建議。我還需要按相反的順序對月份進行排序嗎?如何?-先生?
uj5u.com熱心網友回復:
假設日期在檔案中排序,只需反轉行順序:
tac file
uj5u.com熱心網友回復:
這很好用!
sort -k1Mr -r -k2nr file.txt
file.txt 內容
Oct 6 20:34:59
Oct 29 23:14:39
Oct 30 19:45:15
Oct 31 13:15:19
Nov 1 10:34:15
Nov 2 18:39:20
Nov 3 12:34:59
Nov 4 16:34:59
Nov 5 20:34:59
輸出:
Nov 5 20:34:59
Nov 4 16:34:59
Nov 3 12:34:59
Nov 2 18:39:20
Nov 1 10:34:15
Oct 31 13:15:19
Oct 30 19:45:15
Oct 29 23:14:39
Oct 6 20:34:59
Oct 6 20:34:59注意:如果存在,以下答案無法對條目進行排序。
sort -k1,1 -k2r,2
sort -rM
uj5u.com熱心網友回復:
這對我有用:
sort -k1Mr,1 -k2r,2
月份 - 按欄位 #1 反向排序,然后按欄位 #2 反向排序
Nov 5 20:34:59
Nov 4 16:34:59
Nov 3 12:34:59
Nov 2 18:39:20
Nov 1 10:34:15
Oct 31 13:15:19
Oct 30 19:45:15
Oct 29 23:14:39
編輯:
像這樣的關鍵規范-k2意味著考慮從 2 到行尾的所有欄位。
要按單列排序,-k2,2請用作鍵規范。這意味著使用從#2 到#2 的欄位,即僅使用第二個欄位。
man sort
-k, --key=KEYDEF
sort via a key; KEYDEF gives location and type
...
KEYDEF is F[.C][OPTS][,F[.C][OPTS]] for start and stop position, where
F is a field number and C a character position in the field; both are
origin 1, and the stop position defaults to the line's end.
uj5u.com熱心網友回復:
欄位的排列很幸運,因為第一個在前,第二個在第二個(其余的行無關緊要,因為您每天最多有一個條目)。但是您的示例只有Octand Nov,我認為您不應該依賴它。如果您添加例如Aug 7,您將需要一個更強大的解決方案。我建議:
sort -rM
也就是說,以默認方式排序(按第一個欄位,然后按第二個欄位),將找到的任何月份縮寫視為月份縮寫,并將整個事情反轉。
編輯:這是不正確的。@SaSkY 的答案是正確的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/529484.html
標籤:排序awksed
