分页: 1 / 2

文件内的排序问题

发表于 : 2012-03-06 11:11
Schumacher
有个文件club_member,内容如下:

代码: 全选

[demo@host-6-81 ~]$ cat club_members
Pam Murray      4    657-4324  18
Jim Brown       8    467-8743  22
Jim Roberts     17   728-8295  9
Joyce Murray    7    235-1432  13

现在要根据最后一个field排序(18, 22, 9,13),sort 选项试了几个都没有用,求助。

Re: 文件内的排序问题

发表于 : 2012-03-06 11:22
鲍尔默

代码: 全选

sort -t ' ' -k 5 -n

Re: 文件内的排序问题

发表于 : 2012-03-06 11:27
Schumacher
试过了,没效果。

代码: 全选

[demo@host-6-81 ~]$ sort -t ' ' -k 5 -n club_members >s3
[demo@host-6-81 ~]$ cat s3
Pam Murray      4    657-4324  18
Joyce Murray    7    235-1432  13
Jim Brown       8    467-8743  22
Jim Roberts     17   728-8295  9

Re: 文件内的排序问题

发表于 : 2012-03-06 11:29
鲍尔默

代码: 全选

>0< ~$ cat <<EOF | sort -t ' ' -k 5 -n
> Pam Murray 4 657-4324 18
> Jim Brown 8 467-8743 22
> Jim Roberts 17 728-8295 9
> Joyce Murray 7 235-1432 13
> EOF
Jim Roberts 17 728-8295 9
Joyce Murray 7 235-1432 13
Pam Murray 4 657-4324 18
Jim Brown 8 467-8743 22

>0< ~$

Re: 文件内的排序问题

发表于 : 2012-03-06 11:39
Schumacher
这个问题实际上是一道题:

Sort the file club_members numerically by meetings attended (this is the last field). Send the output to file s3

能用一个shell命令搞定就好了。

Re: 文件内的排序问题

发表于 : 2012-03-06 11:55
自由建客
你那有制表符!别用 -t ' ',直接用 sort -k 5 -n 就行了!

Re: 文件内的排序问题

发表于 : 2012-03-06 13:26
lilydjwg
[bash]ghc -e 'import Data.Function' -e 'import List' -e 'getContents >>= putStr.unlines.(sortBy (compare `on` ((read::String->Int).last.words))).lines'[/bash]

Re: 文件内的排序问题

发表于 : 2012-03-06 14:40
Schumacher
解决了,谢谢楼上诸位的帮忙。

代码: 全选

[demo@host-6-113 ~]$ sort -k 5 -n club_members >s3
[demo@host-6-113 ~]$ cat s3
Jim Roberts     17   728-8295  9
Joyce Murray    7    235-1432  13
Pam Murray      4    657-4324  18
Jim Brown       8    467-8743  22

Re: 文件内的排序问题

发表于 : 2012-03-06 15:01
lilydjwg
Schumacher 写了:解决了,谢谢楼上诸位的帮忙。

代码: 全选

[demo@host-6-113 ~]$ sort -k 5 -n club_members >s3
[demo@host-6-113 ~]$ cat s3
Jim Roberts     17   728-8295  9
Joyce Murray    7    235-1432  13
Pam Murray      4    657-4324  18
Jim Brown       8    467-8743  22
来个有中间名的就完了。

Re: 文件内的排序问题

发表于 : 2012-03-06 15:02
自由建客
lilydjwg, 人家是作业题!

Re: 文件内的排序问题

发表于 : 2012-03-06 15:08
lilydjwg
自由建客 写了:lilydjwg, 人家是作业题!
国内的课程作业?没见过用 shell 解的呢。。

Re: 文件内的排序问题

发表于 : 2012-03-06 15:22
Schumacher
http://linuxzoo.net/

这题是linuxzoo.net上面的题目,这个网站提供虚拟机环境和一些小题目,可以练习linux系统管理,ssh到它的虚拟机上,做题目,可以查对错,还不错。

Re: 文件内的排序问题

发表于 : 2012-03-08 18:02
Think1st
lilydjwg 写了:
Schumacher 写了:解决了,谢谢楼上诸位的帮忙。

代码: 全选

[demo@host-6-113 ~]$ sort -k 5 -n club_members >s3
[demo@host-6-113 ~]$ cat s3
Jim Roberts     17   728-8295  9
Joyce Murray    7    235-1432  13
Pam Murray      4    657-4324  18
Jim Brown       8    467-8743  22
来个有中间名的就完了。
稍微解决一下,这样子?

代码: 全选

cat club_members | sed -e 's/ \{2,\}/\t/g' | sed -e 's/\t\{2,\}/\t/g' | sort -t $'\t' -k4 -n

Re: 文件内的排序问题

发表于 : 2012-03-10 4:26
fnan
哪有名字总是两个域的。

Re: 文件内的排序问题

发表于 : 2012-03-10 12:58
lilydjwg
其实,这个在 vim 中很简单,

代码: 全选

:sort nr /\d\+$/