2011-03-14 78 views
0

我有與字符串開頭的文件如下使用awk排序?

x1, 1, 2, ...

x2, 1, 2, ... 

x10, 1, 3, ... 

x22, 1, 3, ... 

x14, 1, 2, ... 

是可以排序用awk這個文件,使我得到的是數字排序的輸出,例如以x1開頭的行,接着是x2,..等等?

+2

爲什麼不使用'sort -n'? – 2011-03-14 17:56:20

+0

我嘗試使用sort -n,但它給了我x10,x1等等。我做錯了什麼? – Sam 2011-03-14 19:33:14

+1

如果您的'sort'版本支持它,請使用'sort -V'或'sort --version-sort'。如果不是,並且您的前綴總是相同的長度(例如「x」是一個字符),請嘗試'sort -k1.2n -t,'。 – 2011-03-14 19:40:03

回答

1

如果像丹尼斯說,你的前綴是固定寬度的,請嘗試使用:

sort -k 1.2 -g -t, 

在我的情況下,使用與Mac OS X附帶的排序,我不得不使用-g開關。

+0

我試過使用這個選項。我只是想知道你能否解釋這些選擇是如何工作的?我嘗試閱讀手冊頁,但它並不是很有啓發性。 – Sam 2011-03-15 00:43:57

+1

選項-k允許您從行首開始跳過一些圖表,然後開始排序。 '-k 1.2'實際上意味着在第一個字段的第二個字符之後開始排序。 在這種情況下,每個字段都是用逗號分隔的值。 '-t,'表示字段分隔符是「,」。 而'-g'意味着對數字進行排序(與按字母順序排列,我想)。 – edmz 2011-03-15 00:52:50