• linux


      在这里记录了我自己在写shell脚本的时候遇到的问题和解决的方法。方便以后查阅。

    1.正则表达式应用

    a. 匹配含有a或b或c或d,开头和结尾是任意字符的字符串

     egrep '*a|b|c|d*' 

     awk '$2 $3 $4 ~ / *a|b|c|d/'  

    b.匹配开头是固定字符(23),并把后六位替换成000000

      echo "23222sssss"|awk '{if($1 ~ /^23/){$1=sprintf("%013d",$1);$1=substr($1,0,7)"000000";print $0}else{print}}'

    c. 补齐13位

      echo "232223111111"|awk '{print sprintf("%013d",$1)}'            // 0232223111111

    d .匹配开头是2,固定12位的字符串

      echo "232223111111 2322231 3333 223333"|tov|grep '^2...........$'

      echo "232223111111 2322231"|tov|awk '{if($1 ~ /^2...........$/){$1=substr($1,0,7)"000000";print $0}else{print}}'

    2.倒序排列  (a是一个文件)

    cat   a  |

    LANG=C  sort -nr -k2

    3.如何获得某个月的开始日和结束日

    monthindex="201503"

    firstday="${monthindex}""01" #此月开始日

    lastday=$(date -d `date -d "$firstday +1 month" +%Y%m01`"-1 day" +%Y%m%d) #此月结束日

    lastday=$(date -d `date -d " +1 month" +%Y%m01`"-1 day" +%Y%m%d) #当月结束日(最后一天)

    4.截取最后一个"_"之后的字符串

    5.如何区分文件夹和文件

    ls -F|tov

    结果:

    20150421/        #文件夹
    DETAIL/
    data2.csv           #文件
    data3

    处理:

    ls -F|tov|awk '{if($1 ~ //$/){print $1,"dir"}else{print $1,"leaf"}}'

    结果:

    20150421/ dir
    DETAIL/ dir
    data2.csv leaf
    data3 leaf

    6.如何去掉后缀.csv

     

    7、倒序

    LANG=C sort -k2,2nr

    8.截取字符串

    awk '{split($3,b,"(");print $1,$2,b[1]}'

  • 相关阅读:
    这些天对iframe的初步运用
    后台制作与商品装入
    主页的设计
    DevOps
    Nginx
    DevOps
    DevOps
    Cluster
    Cluster
    Cluster
  • 原文地址:https://www.cnblogs.com/heyesp/p/4126579.html
Copyright © 2020-2023  润新知