• Shell脚本学习


    今天hadoop集群在跑些大任务,所以没有资源给我用了

    但是我又要查询hive上的一些数据,怎么办呢

    把hive的数据拿到跳板机本地上来操作?

    但是没有hive工具执行不了

    还好有shell

    文件的格式是这样的:

    URL  访客数

    我现在想统计一下访客数的分布情况

    例如访客数为10个的URL有多少条等等

    cat fan_table | awk -F '\001' '{print $2}' | head -5 

    又要工作要忙了,先暂停,以后继续写    2013-04-20

    现有一文件的内容如下:

    item  like_item  hot_a  hot_b  sup  jaccard

    2465668 1907187 31 26 2 0.03636363636363636
    2465668 2225252 31 27 2 0.03571428571428571
    2465668 2427279 31 31 2 0.03333333333333333
    2465668 539532 31 31 2 0.03333333333333333
    2465668 2443290 31 31 2 0.03333333333333333
    2465668 235435 31 1 1 0.03225806451612903
    2465668 230614 31 1 1 0.03225806451612903

    要做的工作是取出每一个item以及对应的hot_a并将其去重后按照hot_a降序排序

    cat dm_fan_photo_icf_result | awk -F '\001' '{print $1":"$3}' | sort -r -n -k 2 -t : | uniq > photo_hot.txt

    上面的管道是这样执行的

    1)cat 先读取文件

    2)以'\001'以分隔符分割上面读取的文件,并输出第一列以及第三列,中间用“:"分隔

    3)将2)的结果以":"(-t)分隔,然后取第二列(-k),再以数字类型(-n)进行降序排序(-r)

    4)将排序后的结果进行去重(uniq)

    5)将最终结果输出到文件

     今天群里某人问一个查询特定条件的文件并对其大小求和的问题

    试了一下, 貌似这样是可行的

     ls -al *.txt | awk -F ' ' '{print $5}'|awk '{sum += $1}; END {print sum}'

     =================没有分割线有点耍流氓-2015-6-29==================

    今天再学了一招,切分数据,分组统计排序

    cat stdout | awk -F '\t' '{print $3}' | awk -F ':' '{print $1,1}' | awk '{a[$1]+=$2}END{for(i in a)print i,a[i]}' | sort -r -n -k 2 | head -20

    快速查找某个文件夹下包含某字符串的文件

    # find <directory> -type f -name "*.c" | xargs grep "<strings>"

    替换文件中的某些字符,并排序

    cat test | xxx | tr '\002|\001' '\n' | tr '\003' ':' | sort -r -n -k 2 -t : 

    今天又学到一新技能了,按一定的频率做某个操作,例如每隔一秒输出某文件的行数

     watch -n1 wc -l file

    一个恶心的需求,需要先通过Mysql获取到数据,再组装入库到Hbase

    mysql_sql=`cat user_define_similar_radio.txt | awk -F '###' '{print "SELECT CONCAT(\"#\",id) FROM lizhi_app.radio WHERE band = " $1 ";SELECT GROUP_CONCAT(CONCAT(id,\":1.0\")) FROM lizhi_app.radio WHERE band IN(" $2 ");"}'`
    
    mysql_path="mysql -N -uroot -xxxxxx -h 192.168.1.3"
    get_radio=`echo"$mysql_sql" | ${mysql_path}` 

    #不知道什么鬼原因组装的执行语句有问题,所以用了新招,把某些字符删除
    get_radio=`echo $get_radio | sed 's/T1//g' | sed 's/T2//g'`
    num=`echo $get_radio | tr '#' '\n' | wc -l`
    
    for((i=2;i<=num;i++))
    do
    hbase_insert=`echo $get_radio |awk -F '#' '{print $'$i'}' | awk -F ' ' '{print "put \"test\",\"" $1 "\",\"s:similar\",\"" $2 "\""}'`
    echo "$hbase_insert"|hbase shell
    done
  • 相关阅读:
    简单 dp 题选做
    UVa11327
    Codeforces Round #641 (div.2) 题解
    新博客
    数位dp的学习
    stl粗略用法
    cf437C The Child and Toy
    poj1995 Raising Modulo Numbers
    Tarjan的学习
    最短路模板
  • 原文地址:https://www.cnblogs.com/juefan/p/2973773.html
Copyright © 2020-2023  润新知