首页 > 经验交流

Linux下根据字符串长度sort命令排序

时间:2008-12-25 19:00:54  作者:linuxgem  我要投稿
sort 命令可以按照字母或者数字顺序排列字符串,不过如果我们想根据字符串的长度来排序呢?配合一点点 awk 魔法,就可以达成愿望。建立一个 lsort 文件,内容如下:#! ......
所谓排序,就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来。其确切定义如下:
  输入:n个记录R1,R2,…,Rn,其相应的关键字分别为K1,K2,…,Kn
  输出:Ril,Ri2,…,Rin,使得Ki1≤Ki2≤…≤Kin。(或Ki1≥Ki2≥…≥Kin)。

sort 命令可以按照字母或者数字顺序排列字符串,不过如果我们想根据字符串的长度来排序呢?

配合一点点 awk 魔法,就可以达成愿望。建立一个 lsort 文件,内容如下:

#! /bin/sh
awk 'BEGIN { FS=RS } { print length, $0}' $* |
sort 0n -1 |
sed 's/^[0-9][0-9]* //'

首先,awk 把标准输入中每行的前面,都加上这行的长度,然后传给 sort 对长度数字进行排序,最后用 sed 把长度数字删掉。

保存之后,加上可执行标记,就可以拷贝到 /usr/bin 之下,来使用了。

比如,我想看看以 a 开头的最长的单词是哪个,那么输入:

$ look a | lsort

look a 会将所有 a 大头的单词按照字幕顺序显示出来,经过 lsort 的过滤,最后的就是最长的单词了:

sort    -o vegetables vegetables
此命令序列将排序输出存入 vegetables 文件( -o vegetables)。

...
appendorontgenography
anatomicophysiological
aquopentamminecobaltic
anthropomorphologically
$

来顶一下
近回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
相关文章
    无相关信息
栏目更新
栏目热门