设为首页收藏本站

LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区!

 找回密码
 注册

QQ登录

只需一步,快速开始

#公告#抱歉,网站将关闭,不再开放。由于PC时代已远逝 。在这个后移动互联网时代,我们继续携手前行,保持对技术的热情。共同构建linuxtone知识星球欢迎加入,一起讨论技术、招聘人才、分享资源。请新老linuxtone人 扫码移步到 知识星球:linuxtone

学习是一种信仰!分享是一种快乐!能力= 心态 * 沟通 * 知识 (你的每一天需要正能量!)

 网站的发展需要你贡献一份力量!希望你能每天坚持看贴1小时,并回答网友的问题!祝你在浏览论坛的过程中取得进步!谢谢!linuxtone加油!大家加油! 友情提示: 你今天学习了吗?你今天进步了吗?少一点抱怨!多一点进步!Life is short ! Why not linuxtone ?  

网站的发展、感谢每位坛友的努力!

查看: 13679|回复: 39

[shell] 发个练手题   [复制链接]

Rank: 8Rank: 8

签到
169
注册时间
2012-1-6
最后登录
2015-6-11
在线时间
72 小时
阅读权限
90
积分
16791
帖子
27
主题
1
精华
1
UID
17193
发表于 2012-7-23 13:45:23 |显示全部楼层
两个文件,一个a,一个b
#cat a                   #用户名,以及空间使用率
uid:quota_used_rate
chenmeng:35%
wangfurong:20%
luoxuan:40%
guofeifei:20%
lihui:70%
wangwei:66%
wuhuixiong:44%
shashijie:22%

#cat b                   #用户名,以及空间使用率
uid:quota_used
wuhuixiong:100m
guofeifei:500m
luoxuan:200m
wangfurong:99m
shashijie:250m
chenmeng:150m
lihui:88m
wangwei:34m

要求写脚本实现如下效果
chenmeng:35%:150m

Rank: 8Rank: 8

注册时间
2011-6-1
最后登录
2013-12-11
在线时间
287 小时
阅读权限
90
积分
24528
帖子
102
主题
17
精华
0
UID
13989
发表于 2012-7-23 14:13:48 |显示全部楼层
本帖最后由 Format 于 2012-7-23 14:15 编辑
  1. awk -F: 'NR==FNR && /chenmeng/{a[$1]=$NF}FNR==2 && NR>FNR{print $0":"a[$1]}' b a
复制代码

点评

SharkShow  大牛满载  发表于 2012-7-23 15:15:04

使用道具 举报

Rank: 8Rank: 8

注册时间
2012-1-6
最后登录
2015-6-11
在线时间
72 小时
阅读权限
90
积分
16791
帖子
27
主题
1
精华
1
UID
17193
发表于 2012-7-23 14:30:51 |显示全部楼层
Format 发表于 2012-7-23 14:13

取整个的输出啊,不单单输出一个chenmeng

使用道具 举报

论坛元老

挨踢路上求取真经

Rank: 8Rank: 8

注册时间
2011-2-20
最后登录
2018-3-22
在线时间
743 小时
阅读权限
90
积分
156528
帖子
148
主题
5
精华
0
UID
12079
发表于 2012-7-23 14:40:19 |显示全部楼层
ren123 发表于 2012-7-23 14:30
取整个的输出啊,不单单输出一个chenmeng
  1. awk -F: 'NR==FNR{a[$1]=$NF;next}!/uid/{print $0":"a[$1]}' b a
复制代码

使用道具 举报

金牌会员

init 0

Rank: 6Rank: 6

注册时间
2010-9-20
最后登录
2019-7-22
在线时间
35 小时
阅读权限
70
积分
9056
帖子
62
主题
12
精华
0
UID
10432
发表于 2012-7-23 15:52:58 |显示全部楼层
大糖糕僧 发表于 2012-7-23 14:40

能讲讲思路么
个人博客:http://reeddeer.blog.163.com/

使用道具 举报

Rank: 8Rank: 8

注册时间
2011-6-16
最后登录
2018-4-20
在线时间
448 小时
阅读权限
90
积分
46645
帖子
262
主题
33
精华
0
UID
14420
发表于 2012-7-23 15:58:14 |显示全部楼层
学习了,:)

使用道具 举报

论坛元老

挨踢路上求取真经

Rank: 8Rank: 8

注册时间
2011-2-20
最后登录
2018-3-22
在线时间
743 小时
阅读权限
90
积分
156528
帖子
148
主题
5
精华
0
UID
12079
发表于 2012-7-23 16:14:28 |显示全部楼层
reedyan 发表于 2012-7-23 15:52
能讲讲思路么

以为:为域分隔符,
NR==FNR,读取第一个文件,也是b,
建立数组a,以$1为下标,将最后一列的数据存入数组a。
当NR>FNR,读取第二个文件a,跳转去执行next后面的代码,后面的就好理解了。

使用道具 举报

Rank: 8Rank: 8

注册时间
2011-9-16
最后登录
2019-11-23
在线时间
920 小时
阅读权限
90
积分
256583
帖子
2158
主题
2
精华
0
UID
15647
发表于 2012-7-23 18:29:05 |显示全部楼层
先占个位思考一下

使用道具 举报

论坛元老

-------------------

Rank: 8Rank: 8

注册时间
2011-4-19
最后登录
2019-6-4
在线时间
130 小时
阅读权限
90
积分
16977
帖子
142
主题
16
精华
0
UID
13261
发表于 2012-7-23 22:56:36 |显示全部楼层
本帖最后由 netpro 于 2012-7-23 22:57 编辑

占个楼。。
<-sina_sign,1732003880,4bba2588,2->

使用道具 举报

Rank: 8Rank: 8

注册时间
2011-3-7
最后登录
2015-10-26
在线时间
165 小时
阅读权限
90
积分
45651
帖子
41
主题
1
精华
0
UID
12273
发表于 2012-7-23 22:58:41 |显示全部楼层
cat a |sort >a1;cat b |sort >b1;join -t ':' a1 b1

使用道具 举报

论坛元老

LT fans

Rank: 8Rank: 8

注册时间
2011-5-31
最后登录
2019-7-22
在线时间
220 小时
阅读权限
90
积分
30041
帖子
243
主题
23
精华
0
UID
13960
发表于 2012-7-24 09:49:51 |显示全部楼层
  1. awk -F: '{if (NR<=FNR) {a[$1]=$2} else {b[$1]=$2}} END{for (i in a) print i":"a[i]":"b[i]}' a b
复制代码
[root@scripts]# cat a
uid:quota_used_rate
chenmeng:35%
wangfurong:20%
luoxuan:40%
guofeifei:20%
lihui:70%
wangwei:66%
wuhuixiong:44%
shashijie:22%
[root@scripts]# cat b
uid:quota_used
wuhuixiong:100m
guofeifei:500m
luoxuan:200m
wangfurong:99m
shashijie:250m
chenmeng:150m
lihui:88m
wangwei:34m
[root@scripts]# awk -F: '{if (NR<=FNR) {a[$1]=$2} else {b[$1]=$2}} END{for (i in a) print i":"a":"b}' a b
wuhuixiong:44%:100m
guofeifei:20%:500m
luoxuan:40%:200m
wangfurong:20%:99m
wangwei:66%:34m
lihui:70%:88m
chenmeng:35%:150m
uid:quota_used_rate:quota_used
shashijie:22%:250m

使用道具 举报

Rank: 6Rank: 6

注册时间
2011-12-12
最后登录
2013-1-18
在线时间
42 小时
阅读权限
70
积分
8514
帖子
16
主题
1
精华
0
UID
16537
发表于 2012-7-24 13:34:29 |显示全部楼层
# paste -d : a b | cut -d : -f 1,2,4
uid:quota_used_rate:quota_used
chenmeng:35%:100m
wangfurong:20%:500m
luoxuan:40%:200m
guofeifei:20%:99m
lihui:70%:250m
wangwei:66%:150m
wuhuixiong:44%:88m
shashijie:22%:34m

使用道具 举报

Rank: 8Rank: 8

注册时间
2012-5-5
最后登录
2013-3-18
在线时间
56 小时
阅读权限
90
积分
13705
帖子
37
主题
0
精华
0
UID
19920
发表于 2012-8-29 14:41:52 |显示全部楼层

使用道具 举报

Rank: 8Rank: 8

注册时间
2011-8-17
最后登录
2015-7-17
在线时间
489 小时
阅读权限
90
积分
47074
帖子
79
主题
7
精华
0
UID
15421
发表于 2012-8-29 16:58:41 |显示全部楼层
此间高手多啊

使用道具 举报

论坛元老

烂代码生成器

Rank: 8Rank: 8

注册时间
2012-8-30
最后登录
2014-8-27
在线时间
110 小时
阅读权限
90
积分
18059
帖子
33
主题
4
精华
0
UID
35121
发表于 2012-8-31 11:00:03 |显示全部楼层
  1. paste a b|sed '/chenmeng/!d'|sed -rn 'N;s/^(chenmeng)(:\w+%)(.*)\1(:\w+m)$/\1\2\4/p'
复制代码
比较挫一点 , 凑活 能实现。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

IT运维专家网感谢您的支持

合作联系: QQ:67888954/MSN:cnseek@msn.com/mail:netseek@linuxtone.org

Archiver|手机版|感谢所有关心和支持过LinuxTone的朋友们 转载本站内容请注明原作者名及出处 ( 京ICP备08103151 )   |

GMT+8, 2019-11-23 10:19 , Processed in 0.030882 second(s), 13 queries , Apc On.

Powered by Discuz! X2 Licensed

© 2001-2011 Comsenz Inc.

回顶部