SORT的详细用法

cat students
John Johnsen [email protected]     503.555.1111
Hassaan Sarwar   [email protected]    503.444.2132
David Kendall [email protected]     229.111.2013

sort students 缺省时按ascii码从第一个字符比起顺序排序
David Kendall [email protected]     229.111.2013
Hassaan Sarwar   [email protected]    503.444.2132
John Johnsen [email protected]     503.555.1111

sort +1 按第二个字段 || sort +2 按第三个字段..................

sort +1 students
根据第2字段 (字段号1) 开始的整行作为排序关键字(注意:1代表第二字段)
John Johnsen [email protected]     503.555.1111
David Kendall [email protected]     229.111.2013
Hassaan Sarwar   [email protected]    503.444.2132

sort +3 -r -b students
以电话号码为关键字,对文件进行反向排序 (-b用于忽略字段之间的空格)
John Johnsen [email protected]     503.555.1111
Hassaan Sarwar   [email protected]    503.444.2132
David Kendall [email protected]     229.111.2013

sort +1 -2 +3 -b students
将姓氏为主关键字,将电话号码作为次关键字
John Johnsen [email protected]     503.555.1111
David Kendall [email protected]     229.111.2013
Hassaan Sarwar   [email protected]    503.444.2132

sort -k start,end files (关键字开始列,关键字结束列)
sort -rn -k 2,2 students

John Johnsen [email protected]     503.555.1111
Hassaan Sarwar   [email protected]    503.444.2132
David Kendall [email protected]     229.111.2013

sort -t: -k3,3 -k4,4 -k6,6 -k7n,7

-k3,3 就是只征对第3列排序,不排序后面的列
相当于 sort -t: +2 -3 +3 -4 +5 -6 +6n -7
-k7n 是对第7列按数字排序

现有一组数据文件进行排序,准备使用sort命令完成。但是测试并不成功,不知为何。请大家指点:
1。数据字段不是固定长度。
2。数据字段位置可辨,行首及行中、行尾三种情况
例如:
11,222,33
2,12,90
23,235,3
11111111,0,10
33,222222,22
0,90,222222222

求助:请问按行首排序得sort命令如何?行中、行尾呢?

sort -n -t, +0 -1 +1 -2 +2 -3 filename

du | sort -n

sort按照指定的分割符把输入分割。按照指定列对文件排序
sort [-t 分割符] [-r逆序] [+n指定用来排序的列] file
$sort -t: passwd
以:分割行。然后按照分类键0排序
$sort -t: -r passwd
排序求逆
$sort -t: +1 passwd
按照第二列的值进行排序
$sort -t: +2n passwd
按照第三列按数值大小排序
$sort -t: +0 -2 +3 passwd
按照域0排序,忽略域2,然后使用域3排序
sort -t: -k3,3 -k4,4 -k6,6 -k7n,7

-k3,3 就是只征对第3列排序,不排序后面的列
相当于 sort -t: +2 -3 +3 -4 +5 -6 +6n -7
-k7n 是对第7列按数字排序



cut截取子字串
1、cut -c char-list file
echo 2003060160910.dat | cut -c1-9
200306018
取出1-9个字符

2、cut -d 分隔符 -f field-list file
cut -d: -f1 passwd
alias
qmaild
qmaill
qmailp
qmailq
qmailr
qmails
vpopmail
按照:分隔,取出第一个字段

tr主要用于文字替换和压缩重复的字符
。大小写转换
echo abcdefg | tr "a-z" "A-Z"
ABCDEFG

。压缩空格
echo "ab cd ef g" | tr -s " "
ab cd ef g

。压缩空行
cat file | tr -s "/n"

你可能感兴趣的:(SORT的详细用法)