为了账号安全,请及时绑定邮箱和手机立即绑定
  •     df -h | awk '{print $5}' #df第五字段数据

        df -h | grep "/dev/sda5" | awk '{print $5}'    #只要根分区的第五段数据

        df -h | grep "/dev/sda5" | awk '{print $5}' | cut -d "%" -f 1    #去掉%

        awk 'BEGIN{print "test"}{print $2 "\t" $4}' student.txt    #先执行BEGIN

        awk 'END{print "test"}{print $2 "\t" $4}' student.txt    #最后执行END

         cat /etc/passwd | grep /bin/bash | awk 'BEGIN{FS=":"}{print $1 "\t" $3}'    #先执行分隔符,FS内置变量标识":"

         cat student.txt | grep -v Name | awk '$4>=70{print $2}'    #不看名字,只看第二个字段大于70分的成绩


    查看全部
  • awk是一个数据处理工具,相比于sed常常作用于一整行的处理,将一行分成数个”字段“来处理。 

    awk命令

        awk '条件类型1{动作1}条件类型2{动作2}...' 文件名

    条件(Pattern):

        一般使用关系表达式作为条件,比如x>10,x<=10

    动作(Action)

        格式化输出

        流程控制语句

    举例:

        awk '{printf $2 "\t" $4 "\n"}' student.txt #\t\n一定要加"" $2代表第二个字段

        awk '{print $2 "\t" $4}' student.txt #print自动换行

    awk执行流程

        awk先读取第一行数据再判断条件,因为这里没写条件,将文件名student.txt赋值给$0,$2是第二个字段$4是第四个字段。

        再读取第二行数据重复上述步骤


    查看全部
  • printf "输出类型输出格式" 输出内容 

    输出类型: 

        %ns        输出字符串。n是数字指代输出几个字符 

        %n        输出整数。n是数字,指代输出几个数字 

        %m.nf        输出浮点数。m和n是数字,指代输出的整数位数和小数位数。如%8.2f代表共输出8位数,其中2是小数位数,6位是整数 

    输出格式: 

        \a        输出警告声音 

        \b        输出退格键,也就是Backspace键 

        \f        清空屏幕

        \n        换行 

        \r        回车,也就是Enter键 

        \t        水平输出退格键,也就是Tab键 

        \v        垂直输出退格键,也就是Tab键 

    举例:

         echo 123456

         echo 1 2 3 4 5 6

         printf 1 2 3 4 5 6

         printf %s 1 2 3 4 5 6

         printf %s %s %s 1 2 3 4 5 6

         printf '%s %s %s' 1 2 3 4 5 6

         printf '%s\t%s\t%s\n' 1 2 3 4 5 6

        

         vi student.txt

         printf student.txt #输出的只是文件名,不是里面内容

         echo student.txt #输出的只是文件名,不是里面内容

         printf $(cat student.txt) #只显示ID

         printf 's' $(cat student.txt) #没加分割,所有内容连成一篇输出

         printf '%s\t%s\t%s\t%s\t\n' $(cat student.txt)


    查看全部
  • 引例            grep行提取,cut列提取; 

        useradd user1

        vi /etc/passwd

        grep "/bin/bash" /etc/passwd | grep -v "root"    #-v排除root用户

    cut命令

        cut [选项] 文件名    #默认是TAB制表符     

        选项:

        -f 列号:提取第几列(从1开始) 

        -d 分隔符:按照指定分隔符分割列

    举例:

        vi student.txt      #以下是编辑内容

        ID      Name    gender  Mark

        1       furong  F       85

        2       fenggj  F       60

        3       cang    F       70

     

        cut -f 2,4 student.txt

        grep "/bin/bash" /etc/passwd | grep -v "root" | cut -f 1 -d ":"

        df -h        #系统分区使用状况

        df -h | cut -f 1,5    #没有找到TAB制表符,整行数据都是第一列内容

        cut -f 列号,列号 (多个列号用逗号隔开;这个方法默认的文件以TAB制表符) 


    查看全部
  • 命令模式        d+G        鼠标在最前面删除所有内容

        grep "[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}" test.txt    #日期

        grep "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" test.txt    #IP地址

    查看全部
  • 1、转义符“\”

        让特殊的符号丧失它的作用,只是表示这个符号本身

        "\.$"   #匹配以"."结尾的行,使特殊符号"."失去作用

    2、"\{n\}" 表示其前面的字符恰好出现n次

        "a\{3\}"    #匹配a字母连续出现三次的字符串    grep "a\{3\}" test.txt

        "a\{3\}u"    #u前面出现连续三次的a字符串    grep "xa\{3\}u" test.txt   

        "[0-9]\{3\}"   #匹配包含连续的三个数字的字符串,最好加上定界符,即左右加上匹配的字母,如"a[0-9]\{3,\}b",否则易匹配错误,因为正则是包含匹配

    3、"\{n,\}"表示其前面的字符出现不小于n次

        "xc\{1,3\}u"    #匹配在字母x和u之间最少一个c,最多三个c

        "^[0-9]\{3,\}[a-z]"    #匹配最少用连续三个数字开头包含小写字母的行

    4、"\{n,m\}"匹配其前面的字符出现n-m次的行

        "sa\{1,3\}i"    #匹配以s开头、i结尾,且s和i之间有1-3个a的行


    查看全部
  • 1、"."匹配除了换行符外任意一个字符

        "s..d"    #会匹配在s和d这两个字母之间一定有两个字符的单词

        "s.*d"    #匹配在s和d字母之间有任何字符

        ".*"        #匹配所有内容

        grep "s..d" test.txt

        grep "s.*d" test.txt

        grep ".*" test.txt        #查找所有内容

    2、"^"匹配行首,“$”匹配行尾

        "^M"   #匹配以大写字母"M"开头的行

        "n$"   #匹配以小写字母“n”结尾的行

        "^$"   #会匹配空白行

        grep -n "^$" test.txt     #-n显示空白行号

    3、"[]"匹配中括号内指定的任意一个字符,只匹配一个字符,与通配符用法相同

        "s[oa]id"   #匹配s和i字母中,要么是a,要么是o

        "[0-9]"   #匹配任意一个数字

        "^[0-9]"   #匹配以数字开头的行

        "^[0-9]$"    #匹配以数字结尾的行

        "[a-z]$"    #表示匹配以小写字母结束的行

        "^[^a-z]"   #匹配不用小写字母开头的行,“[]”内的“^”表示取反

        "[^a-zA-Z]$"   #匹配不以字母结尾的行,linux中,a-zA-Z表示所有字母


    查看全部
  • "*"前一个字符匹配0次,或任意多次    

        vi test.txt

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

        "aa*"    #匹配至少包含有一个a的行

        "aaa*"    #匹配最少包含有两个连续a的字符串

        "aaaaa*"    #匹配最少包含有四个连续a的字符串

    举例:

        grep "a*" test.file    #*前加任意字符代表该字符重复0次到任意多次

        grep "aa*" test.file

        grep "aaa*" test.file



    查看全部
  • 正则表达式与通配符 

    通配符 

        *         代表匹配任意内容 

        ?         代表匹配任意一个内容

        []     代表中括号中一个字符 

        正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep,awk,sed等命令可以支持正则表达式。 

        通配符用来匹配符号条件的文件名,通配符是    匹配。ls,find,cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配。

        touch abc;touch abcd

        find . -name "abc*"    #必须加上""

        cat anaconda-ks.cfg        #安装日记

        grep "size" anaconda-ks.cfg    #在安装日记里找size


    查看全部
  •                                                  正则表达式 

    正则表达式是什么 

        正则表达式是用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找及替换操作。主要用于模糊匹配。

    查看全部
  • 排序命令sort

    查看全部
  • 统计命令wc

    查看全部
  • sed [选项] [动作] 文件名

    sed基本选项

    查看全部
  • sed选项
    查看全部
  • sed动作
    查看全部

举报

0/150
提交
取消
课程须知
学习本门课程前,还请大家学习慕课网《Tony老师聊shell》系列的前三篇课程!
老师告诉你能学到什么?
1、掌握shell中的正则表达式 2、掌握常用字符截取命令的使用 3、掌握常用字符处理命令的使用

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!