一个什么都学的老程序员  
C#和PHP学习历程
请教SORT的详细用法

sort

cat students
John Johnsen    john.johnsen@tp.com     503.555.1111
Hassaan Sarwar  hsarwar@k12.st.or       503.444.2132
David Kendall   d_kendall@msnbc.org     229.111.2013

sort students
David Kendall   d_kendall@msnbc.org     229.111.2013
Hassaan Sarwar  hsarwar@k12.st.or       503.444.2132
John Johnsen    john.johnsen@tp.com     503.555.1111

sort +1 students
根据第2字段 (字段号1) 开始的整行作为排序关键字
John Johnsen    john.johnsen@tp.com     503.555.1111
David Kendall   d_kendall@msnbc.org     229.111.2013
Hassaan Sarwar  hsarwar@k12.st.or       503.444.2132

sort +3 -r -b students
以电话号码为关键字,对文件进行反向排序 (-b用于忽略字段之间的空格)
John Johnsen    john.johnsen@tp.com     503.555.1111
Hassaan Sarwar  hsarwar@k12.st.or       503.444.2132
David Kendall   d_kendall@msnbc.org     229.111.2013

sort +1 -2 +3 -b students
将姓氏为主关键字,将电话号码作为次关键字
John Johnsen    john.johnsen@tp.com     503.555.1111
David Kendall   d_kendall@msnbc.org     229.111.2013
Hassaan Sarwar  hsarwar@k12.st.or       503.444.2132

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

John Johnsen    john.johnsen@tp.com     503.555.1111
Hassaan Sarwar  hsarwar@k12.st.or       503.444.2132
David Kendall   d_kendall@msnbc.org     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

看虚存:
#ps av |sort +5 -r |head -n 5
看实存:
#ps av |sort +6 -r |head -n 5
看内存%:
# ps au |head -n 1; ps au |egrep -v "RSS"|sort +3 -r |head -n 5


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列按数字排序


现有一组数据文件进行排序,准备使用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

看CPU:
# ps auxwww |head -n 5
看虚存:
#ps av |sort +5 -r |head -n 5
看实存:
#ps av |sort +6 -r |head -n 5
看内存%:
# ps au |head -n 1; ps au |egrep -v "RSS"|sort +3 -r |head -n 5


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排序

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"
posted on 2006-11-27 21:59  剑落飘香  阅读(775)  评论(1编辑  收藏  举报