• 每日一题20180327


    一、问题

    1.1 输出一个 10位的随机数

    1.2 形象地显示最常用的30个命令的使用频率

    1.3 一个《黑客帝国》效果的实现

    二、答案

    2.1

    head -c10 <(echo $RANDOM$RANDOM$RANDOM)
    

    2.2

    history|awk '{print $2}'|sort|uniq -c|sort -rn|head -30|awk '!max{max=$1;}{r="";i=100*$1/max;while(i-->0)r=r"#";printf "%50s %5d %s %s",$2,$1,r,"
    ";}'
    

    分析:

    # 输出常用命令及其统计数
    history|awk '{print $2}'|sort|uniq -c|sort -rn|head -30 > a.txt
    # awk根据统计数输出统计柱状图
    awk '!max{max=$1;}{r="";i=100*$1/max;while(i-->0)r=r"#";printf "%50s %5d %s %s",$2,$1,r,"
    ";}' a.txt
    
    !max{max=$1;}  如果未定义max,就将$1赋值给max,因为是从大到小排序的,所以max是最大值
    i=100*$1/max;  按最大数分成100份,每个命令所占份数
    while(i-->0)r=r"#";printf "%50s %5d %s %s",$2,$1,r,"
    ";  循环输出柱状图
    

    2.3

    echo -ne "e[32m" ; while true ; do echo -ne "e[$(($RANDOM % 2 + 1))m" ; tr -c "[:print:]" " " < /dev/urandom | dd count=1 bs=50 2> /dev/null ; done 
    

    分析:

    echo
    -e表示激活转义字符
    -n表示输入最后不加换行符
    
    "e[32m"
    e[+数字+m固定写法
    # 文字风格
    0 重置风格
    1 粗体
    4 下划线
    5 点线
    7 反转颜色
    8 隐藏
    # 文字颜色
    30 黑色
    31 红色
    32 绿色
    33 黄色
    34 蓝色
    35 红紫色
    36 蓝绿色
    37 白色
    # 背景色
    40 黑色
    41 红色
    42 绿色
    43 黄色
    44 蓝色
    45 红紫色
    46 蓝绿色
    47 白色
    
    tr -c "[:print:]" " " < /dev/urandom
    表示把/dev/urandom里不能打印的字符全部替换为空格
    -c表示把不属于"[:print:]"字符集的字符替换为" "字符集
    如果第二个字符集不写则执行删除不属于第一字符集的内容
    
    接着一个管道符连接到dd count=1 bs=50 2> /dev/null
    表示每50个字节往屏幕输出
    count=1 表示仅读取的次数
    bs=50 设置每次读取或输入的字节数和ibs=50和obs=50效果一样
    2> /dev/null 将错误输出到/dev/null
    

    三、参考

  • 相关阅读:
    【机器学习】scikit-learn中的特征选择小结
    【机器学习】scikit-learn中的数据预处理小结(归一化、缺失值填充、离散特征编码、连续值分箱)
    【机器学习】随机森林原理与调参小结
    用find命令巧查目录下文件的个数
    git
    数据库删除主键
    Linux安装JDK
    计算机进制
    java虚拟机故障处理工具
    线程的六种状态
  • 原文地址:https://www.cnblogs.com/okokabcd/p/8660757.html
Copyright © 2020-2023  润新知