• shell笔记


    1.打印出当前文件大于10K的文件名

    #! /bin/bash
    
    #加上括号使得fileinfo可变成一个数组,如果没有加上(),则fileinfo就只是一个字符串
    fileinfo=(`du -s /home/yhb/shell/*`);
    
    #获取数组的长度
    length=${#fileinfo[@]};
    for((i=0;i<${length};i=i+2));
    do
    if [ "${fileinfo[i]}" -gt 10 ]; then
    echo ${fileinfo[i+1]};
    fi
    done
    

      注意:du的使用方法

    参数-s 是汇总,即如果是一个文件夹,就会得到整个文件夹的大小

    -k 是指文件大小以k的单位来显示

    -m是指文件大小以M的单位来显示

    -h是指以比较合理的大小单位来显示,注意,如果加上h参数,那么大小就会出现10k这样的字符串,而不是10,这样就不能以整数来比较了,所以这里不能加上h参数。

    2.计算程序所执行的时间

    在执行的程序前面加上time命令,比如想看文件test.csv未重复的行有多少,可用

    • sort -u test.csv | wc -l
    • cat test.csv | sort -u | wc -l

    现在想比较下这两种方式哪种比较快,则可以

    • time sort -u test.csv | wc -l
    • time cat test.csv | sort -u | wc -l

    结果分别为

         5016727                                     5016727         

     real 8m44.435s                            real 10m1.697s

     user 4m29.126s                          user 5m1.471s
     sys 0m5.399s                              sys 0m9.218s

    由此可以看到,第一种方式会比较快。

             



    2.1awk使用变量

     awk  -F "	" 'NR==1  {var=sprintf("%s",substr($1,2,19));printf "%s	%s	%s	%s	%s	%d	%s
    ",var,$2,$3,$4,$5,$6,$7} NR>1  {var=sprintf("%s",substr($1,1,19));printf "%s	%s	%s	%s	%s	%d	%s
    ",var,$2,$3,$4,$5,$6,$7}' Distinct.csv > DistinctTimeStamp.csv

    其中-F是设定输入文件的分隔符。

    用printf使输出分隔符为

    2.2 awk使用外部变量

    在使用awk进行shell脚本编写时,常常要引用外部变量,因要进行字符转义,很难写对,以下是具体方法。

    str=Hello
    
    echo "Hello Yes No"|awk '{print " '$str' ",$1}'
    
    运行结果:
    
    Hello  Hello

     程序猿必读

  • 相关阅读:
    使用CablleStatement调用存储过程
    权限问题
    全文检索lucene6.1的检索方式
    spring的JdbcTemplate
    spring使用注解开发
    IDEA的快捷键:
    IDEA里面的facets和artifacts的讲解
    Hibernate---criteria的具体使用列子
    关于操作日期函数及其取范围
    hibernate---crateria
  • 原文地址:https://www.cnblogs.com/longzhongren/p/4319915.html
Copyright © 2020-2023  润新知