我有可能需要按1-n键排序的大文件。其中一些键可能是数字键,有些则可能不是数字键。这是一个固定宽度的柱状文件,因此没有定界符。有没有一种很好的方法可以用Unix排序呢?使用一个键,就像使用“ -n”一样简单。我已经阅读了手册页并简短地搜索了Google,但是没有找到一个很好的例子。我将如何实现这一目标?注意:由于文件大小可能,我排除了Perl。这将是不得已的办法。
3 回答
斯蒂芬大帝
TA贡献1827条经验 获得超8个赞
不过请注意:
如果要主要按字段3排序文件,其次要按字段2排序,则不要这样:
sort -k 3 -k 2 < inputfile
您想要这个:
sort -k 3,3 -k 2,2 < inputfile
第一个按从字段3的开始到行尾的字符串对文件排序(可能是唯一的)。
-k, --key=POS1[,POS2] start a key at POS1 (origin 1), end it at POS2
(default end of line)
30秒到达战场
TA贡献1828条经验 获得超6个赞
-k选项就是您想要的。
-k 1.4,1.5n -k 1.14,1.15n
将在第一个字段中使用字符位置4-5(固定宽度都是一个字段),并将其作为第一个键进行数字排序。
第二个键也是第一个字段中的字符14-15。
(编辑)
示例(我所拥有的都是DOS / cygwin方便的):
dir | \cygwin\bin\sort.exe -k 1.4,1.5n -k 1.40,1.60r
对于数据:
12/10/2008 01:10 PM 1,564,990 outfile.txt
按数字对目录列表进行排序(按月号(pos 4-5),然后按文件名(pos 40-60)反向)。由于没有选项卡,因此所有字段都为1。
- 3 回答
- 0 关注
- 536 浏览
添加回答
举报
0/150
提交
取消