美文网首页
shell编程要点总结

shell编程要点总结

作者: 裁尘的人儿 | 来源:发表于2020-03-25 00:13 被阅读0次

    统计文件列数:
    awk -F '列分隔符' '{print NF}' file | head -n1

    查看文件最后一行:
    tail -n 1
    tail -n1

    查看文件夹里所有文件的总行数:
    法一:
    wc -l *.txt
    法二:

    COUNT=`find ./ -name "*.txt" | xargs wc -l | tail -n 1 | awk -F " " '{print $1}'`
    echo $COUNT
    

    有一个文本count.txt:
    16440
    5123
    635
    19693
    1
    2046
    1715
    对文本里的多行数字求和:
    cat count.txt |awk '{sum+=$1} END {print sum}'

    表示$1逐行开始扫描每一行的第一列
    cat count.txt | awk '{print $1}'

    BEGIN和END的作用是给程序赋予初始状态和程序结束之后执行一些扫尾工作。
    任何在BEGIN之后列出的操作(在{}内)将在Unix awk开始扫描输入之前执行,而END之后列出的操作将在扫描完全部的输入之后执行。因此,通常使用BEGIN来显示变量和预置(初始化)变量,使用END来输出最终结果。
    例:累计销售文件xs中的销售金额(假设销售金额在记录的第三字段):

    $awk
    'BEGIN { FS=":";print "统计销售金额";total=0}
    {print $3;total=total+$3;}
    END {printf "销售金额总计:%.2f",total}' sx
    

    (注:>是shell提供的第二提示符,如要在shell程序Unix awk语句和Unix awk语言中换行,则需在行尾加反斜杠)
    在这里,BEGIN预置了内部变量FS(字段分隔符)和自定义变量total,同时在扫描之前显示出输出行头。而END则在扫描完成后打印出总合计。

    求目录下所有文件的列数和:

    for k in $(ls $dir);do awk -F ' ' '{print NF}' $k|head -n1>>count.txt;done
    cat t.txt |awk '{sum+=$1} END {print sum}'
    

    cut取出文件某几列:
    cut -d ',' -f 2 file.text

    相关文章

      网友评论

          本文标题:shell编程要点总结

          本文链接:https://www.haomeiwen.com/subject/onuzyhtx.html