2011-03-14 73 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