cut能换域的顺序吗

gjwestlife 2008-09-26 11:23:53
eg: cut -f1,2 -d, file1
此命令先输出第一个域,然后再输出第二个域,如果我想先输出第二个,然后再第一个应该怎么做呢,谢谢
...全文
218 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xwmeric123 2008-09-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 gjwestlife 的回复:]
我在学校机器上测试,说uniq没有 -w选项。。。。。。。。学校系统是bash的shell

在弱问一下,如果第一个域的字符不是一样多,比如 aaa
abcd
ca
这样还能用 uniq -w3 吗
如果不行还有别的方法吗
[/Quote]

能用的。

cut没办法交换两列,如果uniq没有-w选项的话就没办法比较第一个域了(前提是有多个域)。
gjwestlife 2008-09-27
  • 打赏
  • 举报
回复
谢谢楼上的方法,但是题目要求只能用head,tail,cut, sort, uniq, tr, wc这些命令,能不能再帮我看看哦

题目是
aaa,12
bbb,13
aew,9
aaa,15
ccc,18
ddd,10
eee,5

要求选出第二个域前4个最大的,打印出对应的第一个域来,只能用head,tail,cut, sort, uniq, tr, wc这些命令,也就是答案应该是:
ccc
aaa
bbb
ddd

如果写 sort -t, -k2 -nr file1 | cut -d, -f1 | uniq | head -n 4 这样的答案是
ccc
aaa
bbb
aaa
这样是不对的,因为不能重复出现,也就是只能选最大的aaa
所以我想的是如果能换列,然后排序成
18,ccc
15,aaa
12,aaa
13,bbb
10,ddd
再用 uniq -f1 就可以得到正确答案了,不知我的想法是否可行,或者有没有别的方法,我已经想了很久,望高人指点

gjwestlife 2008-09-27
  • 打赏
  • 举报
回复
顶一下,好心人帮帮忙吧
gjwestlife 2008-09-27
  • 打赏
  • 举报
回复
我在学校机器上测试,说uniq没有 -w选项。。。。。。。。学校系统是bash的shell

在弱问一下,如果第一个域的字符不是一样多,比如 aaa
abcd
ca
这样还能用 uniq -w3 吗
如果不行还有别的方法吗
xwmeric123 2008-09-27
  • 打赏
  • 举报
回复
sort -t, -k1,1 -k2,2nr file | uniq -w3 | sort -t, -k2,2nr | cut -d, -f1 | head -n 4
xwmeric123 2008-09-27
  • 打赏
  • 举报
回复
sort -t, -k1 -r file | uniq -w 3 | sort -t, -k2 -nr | cut -d, -f1 | head -n 4
joyself 2008-09-26
  • 打赏
  • 举报
回复
看错了 你的分隔符是 ,

awk -F, '{ print $2"\t" $1}' file
joyself 2008-09-26
  • 打赏
  • 举报
回复
楼上说的对,cut不行。

awk -F: '{ print $2"\t" $1}' file

还可以在{}里用printf,看你的需求

xwmeric123 2008-09-26
  • 打赏
  • 举报
回复
用awk吧

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧