• [svc]find+xargs/sed&sed后向引用+awk多匹配符+过滤行绝招总结&&产生随机数


    30天内的文件打包

    find ./test_log -type f -mtime -30|xargs tar -cvf test_log.tar.gz
    

    find,文件+超过7天+超过1M的+按日期为文件名压缩

    注意: exec没-i, xargs如果有引用需要加上-i

    find xargs
        -type
        -name
        -size
        -mtime
    find /tmp/ -type f -mtime +7 -size +1M|xargs -i tar -zcvf access.log.tar.gz {}
    find /tmp/ -type f -mtime +7 -size +1M -exec tar -zcvf access.log.tar.gz {} ;
    
    - 文件+超过7天+超过1M的+按日期为文件名压缩
    find /tmp/ -type f -mtime +7 -size +1M -exec tar -zcvf access_$(date +%F -d -1day).log.tar.gz {} ;
    

    find+sed批量查找替换

    find . -type f -name '*.md'|xargs sed -i 's#maotai#maomao#g'
    

    find删除

    find . -type f -name '*.md'|xargs -i rm -f {}
    
    find . -type f -name '*.md' -exec rm -f {} ;
    1,-exec
    2,-exec没-i
    3,-exec后面有 ;
    

    sed和awk的2个绝招

    • sed后向引用
    • awk多分割过滤

    过滤ip

    - sed实现(后向引用)
    ifconfig eth0|sed -n '2p'|sed -n 's#^.*inet ##gp'|sed -n 's#  ne.*$##gp'
    ifconfig eth0|sed -nr '2s#^.*net (.*)  net.*$#1#gp'
    
    - awk实现(多分割)
    [root@n1 test]# ifconfig eth0|awk -F '[ ]+' 'NR ==2 {print $3}'
    192.168.14.11
    

    过滤文件权限

    [root@n1 test]# ll test.md |awk '{print $1}'|tr 'rwx-' '4210'|awk -F '' '{print $2+$3+$4""$5+$6+$7""$8+$9+$10}'
    644
    
    - sed实现(后向引用)
    [root@n1 test]# stat test.md |sed -nr 's#^.*(0(.*)/-.*$#1#gp'
    644
    
    - awk实现(多分割)
    [root@n1 test]# stat test.md|awk -F '[(/]' 'NR==4 {print $2}'
    0644
    

    过滤/etc/passwd的20-30行

    • 使用强悍的sed
    • 使用awk的条件

    sed过滤行

    sed -n '10p' /etc/passwd
    sed -n '10,20p' /etc/passwd
    

    awk条件过滤行

    - 方式1: 通过NR来控制
    cat /etc/passwd|awk 'NR>10 && NR <20'
    cat /etc/passwd|awk -F ':' 'NR>10 && NR<20 {print $1}'
    注:NR在{}外
    
    - 方式2:通过if语句
    cat /etc/passwd|awk -F ':' '{if($3>3) print $3}'
    注: 这种if在{}里
    

    awk求和

    [root@localhost ~]# awk -F ':' '{(s+=$3)}; END {print s}' /etc/passwd
    2891
    
    

    产生随机数

    - head截取(不换行)
    [root@n1 ~]# echo $RANDOM|md5sum|head -c 10
    7f30eab068[root@n1 ~]#
    
    - cut截取
    [root@n1 ~]# echo $RANDOM|md5sum|cut -c 1-10
    efc85e6acd
    
  • 相关阅读:
    C# CodeFirst(EF框架)代码优先创建数据库
    Entity Framework 配置关系(1对1,1对0)
    Entity Framework 配置关系(1对1,1对0)
    EFDbContext的使用
    EFDbContext的使用
    编程模式·观察者模式、事件通知、消息队列三者区别
    编程模式·观察者模式、事件通知、消息队列三者区别
    设计模式发布订阅方式实现异步并发
    设计模式发布订阅方式实现异步并发
    关于访问asp.net网站时登录后的奇怪问题
  • 原文地址:https://www.cnblogs.com/iiiiher/p/8507948.html
Copyright © 2020-2023  润新知