你身边真实发生过哪些难以置信的事情?

二月花过 二月花过
回答
  • 树犹如此 树犹如此

    需求描述
    现有多个具有相同命名格式及内容格式的文件,要求编写shell脚本将它们合并到一个文件中。被合并文件的命名格式为:yyyymmddhhm**s.r,例如:20161018030205.r;文件中包含了若干行记录,每行记录包含26个字符,其中第一个字符为标识位,第7到12个字符为时间(格式:yymmdd),例如:000000161019002925000003n0,该记录的第一个字符0为标识位,第7到12个字符161019表示时间,即16年的10月19日;合并之后的文件的命名格式为:yyyymmdd.txt,例如:20161018.txt。对于合并操作,具体要求为:
    1)当天只合并前一天的文件,如今天(10月20日)只合并昨天(10月19日)的文件,文件时间通过文件命名即可看出。2)标识位为0的记录会被写到合并之后的文件中,其他记录将被过滤掉。3)时间(即第7到12个字符的值)为前一天的记录会被写到合并之后的文件中,其他记录将被过滤掉。shell脚本
    bin/bash
    srcparh=home/zhou/src
    exportpath=home/zhou/export
    linenum=0
    return_fail()
    {
    exit 1
    }
    function check_config_dir
    {
    if!d${srcparh}];then
    echo"[error]:${srcparh} has not ex**ted!return_fail
    fi
    if!d${exportpath}];then
    echo"[error]:${exportpath} has not ex**ted!return_fail
    fi
    }
    function merge_file
    {
    yesterday date yymmdd
    yes_date_yy=`date-dyesterday+y%m%d`
    yesterday filename
    yes_filename=`date-dyesterday+y%m%d`.txt
    one_day_ago=`date-dyesterday+y%m%d`
    echo"yesterday:${one_day_ago}
    echo"`date+y-%m-%d` `date+t`-begin to merge file
    if[-s${yes_filename}];then
    echo"warn:yesterday file${yes_filename} has ex**ted!now backup it to${yes_filename}_bak.
    mv${yes_filename}${yes_filename}_bak
    fi
    cd${srcparh}
    file_l**t_temp=`ls|grep-e"${one_day_ago}"`
    file_l**t_count=`ls|grep-e"${one_day_ago}"|wc-l`
    echo"
    echo"there are${file_l**t_count} yesterday file(s)to be merged.
    echo"
    {exportpath}/${yes_filename}
    for file_name in$file_l**t_temp
    do
    echo"now to merge${file_name}
    cat${file_name}|grep"^0">${file_name}_filter_firstline
    while read line
    do
    echo"
    echo"** deal th** line:${line}
    echo"
    start_data=${line:6:6}+
    echo"${start_data}"|grep"+${one_day_ago}+
    if[$?eq 0]
    then
    echo"${line}">>${exportpath}/${yes_filename}
    linenum=$[linenum+1]
    fi
    done<${file_name}_filter_firstline
    rm*_filter_firstline
    done
    if[${linenum}-gt 0]
    then
    echo"totally${linenum} lines h**emerged.
    fi
    if!s${exportpath}/${yes_filename}]
    then
    echo"warn:there ** no yesterday file record!{exportpath}/${yes_filename} **blank!echo"">${exportpath}/${yes_filename}
    fi
    }
    main()
    {
    echo"
    echo"th** mergetool begins running-
    check_config_dir;merge_file;echo"-end-
    }
    execute main function
    main$123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
    脚本说明
    第一,在脚本的第3到5行,定义了三个变量,其中srcparh用于存放被合并的文件,exportpath用于存放合并之后的文件,linenum用于表示本次写到合并之后的文件中的记录的条数。第二,return_fail用于在执行出现异常(如srcparh或exportpath所表示的路径不存在)时退出程序而不进行后续处理。第三,check_config_dir函数用于检查srcparh或exportpath所表示的路径是否存在,如不存在,则不进行后续处理。第四,merge_file函数是本脚本的核心,它的主要功能是找出srcparh下满足时间条件的文件,并按照需求要求将文件中的记录筛选出来,放到结果文件中。如果有满足条件的记录,那么脚本会显示写入到结果文件中的记录的条数。第五,main函数是整个程序的入口(就像c语言中的main函数一样),它调用了check_config_dir和merge_file函数。脚本执行结果
    第一,当srcparh所表示的路径不存在时,执行结果如下:
    file_merge_tool.sh
    th** merge tool begins running-
    [error]:/home/zhou/src has not ex**ted!12341234
    第二,当exportpath所表示的路径不存在时,执行结果如下:
    file_merge_tool.sh
    th** merge tool begins running-
    [error]:/home/zhou/export has not ex**ted!12341234
    第三,当srcparh所表示的路径存在但不包含任何文件时,执行结果如下:
    file_merge_tool.sh
    th** merge tool begins running-
    yesterday:161019
    2016-10-20 16:30:06-begin to merge file
    there are 0 yesterday file(s)to be merged.
    warn:there ** no yesterday filerecord!home/zhou/export/20161019.txt ** blank!end-1234567891012345678910
    第四,现有四个文件20161018030205.r、20161019030254.r、20161019182531.r、20161019213456.r,每个文件的内容如下:
    20161018030205.**件:
    000000161019002925000003n0
    000000161019002931000003n0
    300000161018002931000003n0
    000000161019002926000009y0
    000000161019003150000003n0
    20161019030254.**件:
    000000161019004925000003n0
    000000161019006931000003n0
    100000161019006971000004n0
    000000161019007926000009y0
    200000161019006871000004n0
    000000161019008150000003n0
    20161019182531.**件:
    000000161019001925000003n0
    000000161019004931000003n0
    000000161018007926000009y0
    000000161019007926000009y0
    000000161019009150000003n0
    000000161017007926000009y0
    600000161019007426000009y0
    20161019213456.**件:
    000000161019002925000003n0
    000000161019002931000003n0
    000000161019002926000009y0
    800000161019002961000003n0
    000000161019003150000003n0
    将它们上传到srcparh目录下,运行脚本,结果如下:
    file_merge_tool.sh
    th** merge tool begins running-
    yesterday:161019
    2016-10-20 17:08:24-begin to merge file
    there are 3 yesterday file(s)to be merged.
    now to merge 20161019030254.r
    now to deal th** line:000000161019004925000003n0
    161019+
    now to deal th** line:000000161019006931000003n0
    161019+
    now to deal th** line:000000161019007926000009y0
    161019+
    now to deal th** line:000000161019008150000003n0
    161019+
    now to merge 20161019182531.r
    now to deal th** line:000000161019001925000003n0
    161019+
    now to deal th** line:000000161019004931000003n0
    161019+
    now to deal th** line:000000161018007926000009y0
    now to deal th** line:000000161019007926000009y0
    161019+
    now to deal th** line:000000161019009150000003n0
    161019+
    now to deal th** line:000000161017007926000009y0
    now to merge 20161019213456.r
    now to deal th** line:000000161019002925000003n0
    161019+
    now to deal th** line:000000161019002931000003n0
    161019+
    now to deal th** line:000000161019002926000009y0
    161019+
    now to deal th** line:000000161019003150000003n0
    161019+
    totally 12 lines h**e merged.
    end-1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666712345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
    对照被合并的文件和结果文件,一共有4个文件,但只有3个文件(20161019030254.r、20161019182531.r、20161019213456.r)满足时间条件,这3个文件中满足过滤条件(标识位为0、时间为前一天)的记录条数为12条,和脚本执行结果一致。大家也可对本脚本进行更多的测试。总结
    shell脚本在基于linux的开发中有极为广泛的应用,因为它靠近底层,执行效率高、部署方便。本文中的脚本也可以作为定时任务部署到机器上,让它在每天的同一个时间里自动执行。

类似问答
  • 热血传奇中你最喜欢哪一件装备,与你发生过什么情缘故事?

    提问时间:2024-05-10 09:26:05

    最主要的就是武器了,屠龙刀,以前玩传奇就是梦寐以求的屠龙刀了,霸主的象征啊!以前玩康琦很有意思的,拿过裁决,裁决裁决裁决就可以了,屠龙刀嗯,能拿到屠龙刀那要命了...

  • 你听说过哪些骇人听闻的真实**?

    提问时间:2024-05-10 06:37:04

    看了大家发了这么多吓人的**,作为一个游戏领域的创作者,我就给大家讲一讲游戏里真实的恐怖**,这里面每一件说出来都是骇人听闻的!21岁男子玩游戏嫌小孩吵持刀捅伤...

  • 你身边那些大家口中的“老实人”,生活现状是怎样的?

    提问时间:2024-05-10 13:28:29

    首先说出我的答案:“老实人”绝对没有好下场~最好的结局,也就是个默默无闻,了此残生…浅析如下:社会上的资源是有限的,从某种意义上说,“过的好”的人其实就是多占有...

  • 和同桌发生过哪些难忘的事?

    提问时间:2024-05-10 14:43:37

    和班里公认的最帅的小伙子同桌。女生宿舍卧谈会只要谈到他就自动屏蔽,滚去睡觉了。产生一种条件反射,长得帅的人都是邋遢大王。因为无数次看到他书桌里的各种过期食品,各...

  • 你为钓鱼做过哪些疯狂的事情?

    提问时间:2024-05-10 09:23:22

    为了寻找最好的鱼饵,捅过马蜂窝,用蜂儿钓鱼,被马蜂追的跳水塘。为了钓雅鱼,裤子衣服脱光光,拿着鱼杆,把衣服裤子顶在头上,坚难的渡过急流,爬上离岸有二十米的岩石上...

  • 有哪些真实的事件,离奇的不像是真的?

    提问时间:2024-05-10 04:44:39

    4月2日下午1点左右,在重庆某小区,一6岁小女孩不慎从26楼窗户坠下,落地后竟自己爬了起来,事发后被热心群众送到医院,女孩仅右手骨折,无生命危险。如果没有这些视...

  • 你在户外旅行中发生过哪些有趣搞笑的事儿?

    提问时间:2024-05-10 07:27:17

    作为从初中就敢独自去森林露营、没事儿去荒野求个生的骨灰级作死户外玩家,有许多亲生经历的爆笑故事跟大家分享。1.晚上在海拔3700的山梁上用自制的柴炉烧水,我纳闷...

  • 在现实生活中你碰到过哪些超级尴尬的事情?

    提问时间:2024-05-10 17:05:24

    首先感谢邀请要说生活中遇到哪些尴尬事,哇塞,那真是太多了!我就讲述几件经典尴尬且搞笑的事情吧。第一件尴尬的事发生在我上三四年级的时候,具体时间不记得了,确切地说...

  • 你身边闷声发大财的人都是做什么生意的?

    提问时间:2024-05-10 00:41:42

    我回答一下吧:我有个朋友,正常人,也没感觉那里特别,跟大家一起上学打游戏想毕业后找个工作,不行辞了再找!开始我们天天在一起打游戏,那时候打魔兽3后来是守图3c等...

  • 大家经历过哪些被你身边朋友伤害的事情?

    提问时间:2024-05-10 12:16:24

    一般肯定会说:既然是你的朋友,就没啥深仇大恨,最多就是一时赌气,想解决也容易,就是拉着她,微微一笑,说一句,好兄弟,好姐妹,别生气,但是真的伤害到自己以后才知道...

精品推荐

友情链接

友链互换QQ:

谷财 备案编号:蜀ICP备11019336号-3商务合作:235-677-2621

Copyright 2009-2020 Chengdu Sanzilewan Technology Co.,Ltd all rights reserve

抵制不良游戏 拒绝盗版游戏 注意自我保护 谨防受骗上当 适度游戏益脑 沉迷游戏伤身 合理安排时间 享受健康生活