Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2039921
  • 博文数量: 470
  • 博客积分: 10206
  • 博客等级: 上将
  • 技术积分: 5620
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-03 12:50
文章分类

全部博文(470)

文章存档

2012年(1)

2011年(18)

2010年(47)

2009年(404)

分类:

2009-06-17 18:46:16

[] [] [] [] []
  美女
圣骑士




CU编号: 187439
注册:2004-10-4
最后登录: 2009-06-17
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-6-17 15:03 
三个文件的内容如下:

CODE:
[root@localhost shell]# cat index
0 112
1 16
2 320
3 336
4 48
5 80
6 96
[root@localhost shell]# cat name
0  server1
1  server2
2  server3
3  server4
4  server5
5  server6
6  server7
[root@localhost shell]# cat mem
16 62912
48 15728
80 34076
96 10484
112 28832
336 26212
[root@localhost shell]#

我想得到如下的效果:

CODE:
# cat last
0 112 server1 28832
1 16 server2 62912
2 320 server3
3 336 server4 26212
4 48 server5 15728
5 80 server6 34076
6 96 server7  10484

请教如何呢?谢谢



您对本贴的看法:
| | |
  帅哥
风云使者




CU编号: 690903
注册:2008-4-13
最后登录: 2009-06-17
帖子:
精华:0







状态:...在线...

[] [] [博客]


[]       顶部
发表于 2009-6-17 15:46 
回复 #1 netlogon 的帖子

第一步:paste index name | awk '{$3=""}1' >notlast
第二步:
[root@localhost lianshou]# cat notlast
0 112  server1
1 16  server2
2 320  server3
3 336  server4
4 48  server5
5 80  server6
6 96  server7
第三步:
awk 'NR==FNR{a[$1]=$2;next}$2 in a{ print $0,a[$2]}!($2 in a){print}' mem notlast
0 112  server1 28832
1 16  server2 62912
2 320  server3
3 336  server4 26212
4 48  server5 15728
5 80  server6 34076
6 96  server7 10484



您对本贴的看法:
| | |
  帅哥
天使


CU奥运火炬传递手2008
CU编号: 627235
注册:2007-10-11
最后登录: 2009-06-17
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-6-17 15:48 
事实上我觉得复杂的连接最好交给数据库解决。



您对本贴的看法:

__________________________________

锦瑟无端五十弦,一弦一柱思华年。庄生晓梦迷蝴蝶,望帝春心托杜鹃。
沧海月明珠有泪,蓝田日暖玉生烟。此情可待成追忆,只是当时已惘然。


推荐歌曲:Wings of Destiny(狂想乐队)
| | |
  帅哥 (Tim)
法师


CU奥运火炬传递手2008
CU编号: 465018
注册:2006-9-13
最后登录: 2009-06-17
帖子:
精华:0







来自:长春
状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-6-17 15:52 
回复 #1 netlogon 的帖子

try

CODE:
awk 'ARGIND==1{n[$1]=$2}ARGIND==2{m[$1]=$2}ARGIND==3{print $0,n[$1],m[$2]}' name mem index




您对本贴的看法:

__________________________________

记住该记住的,忘记该忘记的。改变能改变的,接受不能改变的。
| | |

骑士




CU编号: 118841
注册:2003-12-12
最后登录: 2009-06-17
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-6-17 15:56 
回复 #3 ILoveMK 的帖子

同感 不过自我挑战又是另外一回事



您对本贴的看法:

__________________________________

新手 需要不断学习 不断反思 不断实践
如果说错了 多指教 如果做对了 多鼓励 :)
——一位小学信息技术教师的心声

好好看书好好思考再完整提问
| | |
  帅哥 (青蛙)
风云使者




CU编号: 523798
注册:2007-1-29
最后登录: 2009-06-17
帖子:
精华:0







来自:深圳
状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-6-17 15:57 
笨人的笨方法
join index name > a
sort mem > b
join -a1 -a2 -j1 2 -j2 1 a b | awk '{print $2,$1,$3,$4}'



您对本贴的看法:
| | |

大天使



CU编号: 347943
注册:2005-12-11
最后登录: 2009-06-17
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-6-17 16:24 
这种问题用awk处理是最合适的



您对本贴的看法:

__________________________________

shell新手&&awk新手
http://blog.chinaunix.net/u3/91453/


| | |
  美女
圣骑士




CU编号: 187439
注册:2004-10-4
最后登录: 2009-06-17
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-6-17 17:25 


QUOTE:
原帖由 ly5066113 于 2009-6-17 15:52 发表
try

awk 'ARGIND==1{n[$1]=$2}ARGIND==2{m[$1]=$2}ARGIND==3{print $0,n[$1],m[$2]}' name mem index

如果不止三个文件呢?

例如:

CODE:
[root@localhost shell]# cat /tmp/index
0 112
1 16
2 320
3 336
4 48
5 80
6 96
[root@localhost shell]# cat /tmp/name
0       server1
1       server2
2       server3
3       server4
4       server5
5       server6
6       server7
[root@localhost shell]# cat /tmp/memtatol
16 262144
48 524288
80 262144
96 262144
112 262144
336 262144
[root@localhost shell]# cat /tmp/memused
16 70776
48 10484
80 34076
96 18348
112 20968
336 23592
[root@localhost shell]# cat /tmp/cpuused
16 139300
17 98012
48 89978
80 103676
96 92172
112 94314
336 102839




您对本贴的看法:
| | |
  帅哥 (狼烟)
光明使者
八十万色狼总教头



CU编号: 547805
注册:2007-4-5
最后登录: 2009-06-17
帖子:
精华:0







来自:北京
状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-6-17 17:39 
回复 #8 netlogon 的帖子

那就再多整几个"ARGIND==xxx"做记录。


阅读(835) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~