zoukankan      html  css  js  c++  java
  • linux awk和sed工具

    慕课网链接:https://www.imooc.com/video/14508

    部分示例命令

    #替换passwd中的用户名和userid和gid
    gsed 's/(^[a-z_-]+):*:([0-9]+):([0-9-]+):.*$/user:1 uid:2 pid:3/' passwd
    #替换出网卡中的ip地址
    ifconfig en0 | gsed -n '/inet /p' | gsed 's/inet ([0-9.]+) .*$/1/'
    
    #Awk
    awk -F ':' '{print $1, $3}' passwd
    awk -F ':' '{print "User:"$1,"UID:"$3}' passwd
    ➜  mac-function-test awk -F ':' '{print NR,NF,FILENAME}' passwd
    
    #print和printf
    ➜  mac-function-test awk -F ':' '{print "Line: "NR, "Col:"Nf,"User:"$1}' passwd     
    ➜  mac-function-test awk -F ':' '{printf("Line:%3s Col:%s User:%s
    ",NR,NF,$1)}' passwd
    #password文档中用户id大于100的记录
    ➜  mac-function-test awk -F ':' '{if ($3>100) print "Line: "NR,"User: "$1, "UserId: "$3}' passwd
    #打印nginx日志文件中错误发生时间
    ➜  logs gsed -n '/error/p' error.log | awk '{print $1,$2 }'
    打印错误时间方法二
    ➜  logs awk '/error/{print $1,$2}' error.log
    # ~逻辑判断的表达式 !~逻辑判断的表达式 取反 匹配正则表达式
    ➜  mac-function-test awk -F ':' '$1!~/^e.*/{print $1}' passwd
    #userId小于100的数据
    ➜  mac-function-test awk -F ':' '$3<100{print $1,$3}' passwd
    
    #用passwd文件中的3个值做一个统计表
    ➜  mac-function-test awk -F ':' 'BEGIN{print "Line  Col  User"}{print NR,NF,$1}END{print"-----"FILENAME"------"}' passwd
    
    #当前目录下文件占用的大小
    ➜  mac-function-test ls -l | awk 'BEGIN{size=0}{size+=$5}END{print " size is " size/1024/1024"M"}'
    #统计passwd的账号总人数
    ➜  mac-function-test awk -F ':' 'BEGIN{count=0}$1!~/^$/{count++}END{print "count = "count}' passwd 
    #打印用户id大于100的账号
    ➜  mac-function-test awk -F ':' 'BEGIN{count=0}{if($3> 100) name[count++]=$1}END{for(i=0;i<count;i++)print i,name[i]}' passwd
    #统计netstat -anp状态下为ESTABLISHED
    

     将.properties文件中注释的行替换为空

    gsed -i 's/^#.*//' needupload.properties
    

     

    当你搜索和替换含分隔符的字符串时,我们需要用反斜杠 来取消转义

    https://www.cnblogs.com/linuxprobe/p/12146939.html

    例子截图:

      

    bilibili中不错的视频教程:

    https://www.bilibili.com/video/BV1WW411v7PS/?p=11

    相应推荐的在线网站:

    https://regexr.com/

    正则注意贪婪模式和转义符号“”;

     

     慕课网课程2:https://www.imooc.com/video/7345

    linux通配符:*代表匹配任意字符;?代表匹配任意一个字符;[]代表匹配其中的一个字符

     

    ➜  mac-function-test touch cangls
    ➜  mac-function-test touch canyls
    ➜  mac-function-test ls can?ls
    cangls canyls
    ➜  mac-function-test ls can???
    cangls canyls
    ➜  mac-function-test ls can*
    cangls canyls
    ➜  mac-function-test ls can[gy]ls
    cangls canyls
    ➜  mac-function-test ls can[g]ls
    cangls
    ➜  mac-function-test touc abc
    zsh: command not found: touc
    ➜  mac-function-test touch abc
    ➜  mac-function-test touch abcd
    ➜  mac-function-test find . -name abc
    ./abc
    ➜  mac-function-test find . -name abc?
    ./abcd
    ➜  mac-function-test find . -name "abc*"
    ./abc
    ./abc.txt
    ./abcd
    

     

    正则中“*”前一个字符匹配0次,或者任意多次

    “a*

    #匹配所有内容,包括空白行

    “aa*

    #匹配至少包含一个a的行

     

    正则中“.”匹配除了换行符外的任意一个字符

    “[]”匹配中括号中指定的任意一个字符,只匹配一个字符

    “^[^a-z]”

    #匹配不用小写字母开头的行

    “^[^a-zA-Z]”

    #匹配不用字母开头的行

    ”转移符

    {n}”表示其前面的字符恰好出现n次

     

    #例子 匹配2010-09-01

    [0-9]{4}-[0-9]{2}-[0-9]{2}

     

     

    awk使用print和printf的区别
    ➜  mac-function-test awk '{printf $2 "	" $4 "
    "}' student.txt
    ➜  mac-function-test awk '{print $2 "	" $4 }' student.txt 
    ➜  mac-function-test df -h | grep '/' | awk '{print $5}' | cut -d "%" -f 1
    
    
    
    ➜  mac-function-test cat student.txt 
    Id	name	gender	mark
    1	furong	f	85
    2	fengj	F	60
    3	cang	F	70
    ➜  mac-function-test awk '{print $2 "	" $4}' student.txt 
    name	mark
    furong	85
    fengj	60
    cang	70
    ➜  mac-function-test awk 'BEGIN{print "test"}{print $2 "	" $4}' student.txt
    test
    name	mark
    furong	85
    fengj	60
    cang	70
    ➜  mac-function-test awk 'END{print "test"}{print $2 "	" $4}' student.txt
    name	mark
    furong	85
    fengj	60
    cang	70
    test
    
    ➜  mac-function-test cat passwd|grep /bin/bash
    _mbsetupuser:*:248:248:Setup User:/var/setup:/bin/bash
    ➜  mac-function-test cat passwd|grep /bin/bash |awk '{FS=":"}{print $1 "	" $3}'
    _mbsetupuser:*:248:248:Setup	
    ➜  mac-function-test cat passwd|grep /bin/bash |awk 'BEGIN{FS=":"}{print $1 "	" $3}'
    _mbsetupuser	248
    ➜  mac-function-test cat student.txt|grep -v name
    1	furong	f	85
    2	fengj	F	60
    3	cang	F	70
    ➜  mac-function-test cat student.txt|grep -v name | awk '$4>=70{print $2}'
    furong
    cang
    
    ➜  mac-function-test sort -n -t ":" -k 3,3 passwd
    

      

     

     

     

  • 相关阅读:
    inndb 刷脏页
    mysql 创建索引
    mysql 索引异常:
    mysql change buffer
    mysql 事务
    mysql 全局锁和表锁
    mysql 索引优化
    mysql innoDB使用b+树作为索引
    mysql 中redo log bin log
    mysql 隔离级别
  • 原文地址:https://www.cnblogs.com/zhucezmf/p/11481602.html
Copyright © 2011-2022 走看看