linux根据字符串长度排序

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 之下,来使用了。

比如:

$cat pattern.dict | lsort

 

发表评论

电子邮件地址不会被公开。