随笔分类 -  awk 题目讲解

摘要:【场景】--工时脚本这个是我对目前的公司上班制度;我写的工时脚本;为了确定本月工时是否足够;纯属玩弄!需求: 1.上班采用弹性一个小时上班打卡(8:00--9:00);8:00之前打卡;算是8:00时刻打卡;9:00之后打卡算是迟到(目前这个脚本对迟到/请假不处理) 2.中午(12:00--13:30)是中饭时间;所以这个不计工时; 3.下班时间从17:30开始;(17:30--18:00)是晚餐时间;也不计工时。 4.加班到(20:30)有10块的晚餐补助!这个月的餐补有多少次? 5.一个月要保证每天有8H;这个月的平均上班时间是多少?worktime.awk代码如下: 1 # 作者 li. 阅读全文
posted @ 2013-09-15 14:43 lottu 阅读(430) 评论(0) 推荐(0)
摘要:【场景】--类似于excel中的sum函数对列/行进行统计求和 A01 30 16 9 3 2 30 30 16 9 3 A02 14 6 1 0 7 14 14 6 1 0 A03 4 0 3 0 1 4 0 4 0 3 A09 6 3 0 0 3 6 0 6 3 0【要求1】--对列进行统计求和 A01 30 16 9 3 2 30 30 16 9 3 A02 14 6 1 0 7 ... 阅读全文
posted @ 2013-09-13 22:24 lottu 阅读(729) 评论(0) 推荐(1)
摘要:【场景】--如何根据文件1中的关键字提取文件2中的内容文件1: 4238 4240文件2 4237 MY4237A 4237 MY4237B 4238 MY4238A 4238 MY4238B 4238 MY4238C 4239 MD4239A 4240 MY4240A 4240 MY4240B 4240 MY4240C 4240 MD4240A 4240 MD4240B 4240 MD4240C要求根据文件1中的字段1为关键字提取文件2中的内容,输出如下: 4238 MY4238A 4238 MY4238B 4238 MY4238C 4240 MY4240A ... 阅读全文
posted @ 2013-09-11 22:40 lottu 阅读(243) 评论(1) 推荐(0)
摘要:【场景】--计算行的和但若是要计算行的和呢?假设文件有N行,10列,想计算这10列的和,作为新的$11,每行都这么处理,那要如何实现呢?【代码】1 awk '{for (i=1;i<=NF;i++) s=s+$i; print $0,s;s=0}'2 awk '{for(i=1;i<=NF;i++){a[NR]+=$i} print $0,a[NR];delete a}'【测试】[li0924@localhost awk]$ cat d.txt1 2 4 5 2 6 4 43 233 4 5 3 42 2 4 2 4523 32 2 2 4 1 5 阅读全文
posted @ 2013-09-11 22:27 lottu 阅读(240) 评论(1) 推荐(0)
摘要:【场景】有一个文件b.txt,内容如下:[root@OracleA test]# cat b.txthttp://www.baidu.com/index.htmlhttp://www.google.com/index.htmlhttp://www.baidu.com/get.htmlhttp://www.baidu.com/set.htmlhttp://www.google.com/index.htmlhttp://www.yahoo.com.cn/put.html现要求将该文件中的域名截取出来,统计重复域名出现的次数,然后按次数进行降序排列,统计后的结果如下:3 www.baidu.com2 阅读全文
posted @ 2013-09-10 22:24 lottu 阅读(321) 评论(1) 推荐(0)
摘要:博客园awk高手众多;在这里是个人对awk的学习一点心得;同时也是awk的精妙之处;在此若有错误请大家指正,一起来完善!awk如何引入变量?有两种方法1 awk -v var=$VAR '{code}'2 awk '{print "'$VAR'"}' 例如测试:1 [li0924@localhost awk]$ a=li09242 [li0924@localhost awk]$ echo fef| awk -v var=$a '{print var}'3 li09244 [li0924@localhost aw 阅读全文
posted @ 2013-09-09 22:07 lottu 阅读(520) 评论(0) 推荐(0)
摘要:【场景】我手头上有三个文件,他们的格式都是一样的,总共5列.如果我想求他们的并集,并且如果前三列相同第四列的数字相加,第五列信息合并.我尝试用awk去做,可是结果并不齐全.应该怎么做呢?以下是文件格式:1.a.txt WINGS 1000 4000 3 3/20_505 WINGS 5000 6000 8 8/20_505 SANLY 2000 4000 9 9/20_505 TINAG 8000 10000 11 11/20_5052.b.txt WINGS 1000 4000 3 3/18_707 ANNY 4000 7000 4 4/18_707 MOLLY 3000 4300 5 5. 阅读全文
posted @ 2013-09-09 21:28 lottu 阅读(337) 评论(0) 推荐(0)
摘要:【场景】文件awk01的内容如下:stra bstra cstra dstrb 1strb 2strb 3实现效果如下:strabcdstrb123代码测试如下:[li0924@localhost awk]$ awk '{b=a[$1]++?$2:$1RS$2;print b}' awk01 strabcdstrb123【解析】 利用数组a来进行判断;a[$1]的初始值我们未定义;a[$1]转换为整型值为0;0在awk是为假;所以b=$1RS$2;随着a[$1]++;该值是非0;b=$2;其中RS是awk的内置变量;默认是换行即"\n"这里是zooyo大师的 阅读全文
posted @ 2013-09-09 18:51 lottu 阅读(333) 评论(0) 推荐(0)
摘要:下午朋友对我说“awk中怎么计算某列的值为四舍五入”;我们知道awk中是没有round函数;那样怎么样达到四舍五入的效果呢?我当时就想就写一个自定义函数吧!正好练习下最近学习的awk语言! functionround(a){b=int(a);c=a*10;d=b*10+5;if(c>=d){e=b+1;}else{e=b;}returne;} 测验这个函数;round.awkfunctionround(a){b=int(a);c=a*10;d=b*10+5;e=(c>=d)?(b+1):b;returne;}{printround(3.25),round(3.5),round(4. 阅读全文
posted @ 2013-06-10 23:50 lottu 阅读(2703) 评论(0) 推荐(0)