zoukankan      html  css  js  c++  java
  • 第十三天-linux正则表达式及重点命令

    正则表达式:
      简单的说,正则表达式就是一套处理字符串的规则和方法,以行为单位对字符串进行处理,通过特殊的符号辅助,我们可以快速的过滤,替换某些特定的字符串。
      运维工作中,会有大量的访问日志,错误日志。如何能快速的过滤出我们需要的内容,这就要靠正则表达式。
      awk,sed,grep(egrep)linux三剑客想要工作的更高效,那么一定离不开正则表达式的配合。
      我们想要玩好三剑客,主要是awk,sed,grep。三剑客的正则表达式。


    正则表达式实际就是一些特殊的字符,赋予了他特等的含义。
    1)^word        搜索以word开头的
    2)word$        搜索以word结尾的
    3).              代表且只能代表任意一个字符
    4)                 转义字符,转义符号,让有着特殊身份意义的字符,脱掉马甲,还原原型。
    5)*                 重复0个或多个前面的一个字符
    6).*                匹配所有字符。^.*以任意多个字符开头
    7)[]                字符集合,重复特殊字符的符号
    8)[^word]       匹配不包含^后的任意字符的内容
    9)a{n,m}      重复n到m次,前一个字符
        {n,}          重复至少n次,前一个字符
        {n}           重复n次,前一个字符

    扩展的正则表达式:ERE
    1)+                重复一个或一个以上前一个字符
    2)?                重复0个或0以上个前面的字符
    3)|                 用或的方式查找多个字符串
    实战例题
    1.如何取得/etiantian文件的权限对应的数字内容,如-rw-r--r--为644,要求使用命令取得644或0644这样的数字。

    方法1:
    xiaorui@xiaorui:~/test$ ll etiantian
    -rw-r--r-- 1 xiaorui xiaorui 0 11月 25 21:28 etiantian
    xiaorui@xiaorui:~/test$ ll etiantian |cut -c 2-10
    rw-r--r--
    xiaorui@xiaorui:~/test$ ll etiantian |cut -c 2-10|tr rwx- 4210
    420400400
    xiaorui@xiaorui:~/test$ ll etiantian |cut -c 2-10|tr rwx- 4210|awk -F "" '{print $1}'
    4
    xiaorui@xiaorui:~/test$ ll etiantian |cut -c 2-10|tr rwx- 4210|awk -F "" '{print $1+$2+$3 $4+$5+$6 $7+$8+$9}'
    644
    方法2:
    xiaorui@xiaorui:~/test$ stat etiantian
      文件:"etiantian"
      大小:0             块:0          IO 块:4096   普通空文件
    设备:802h/2050d    Inode:23200567    硬链接:1
    权限:(0644/-rw-r--r--)  Uid:( 1000/ xiaorui)   Gid:( 1000/ xiaorui)
    最近访问:2015-11-25 21:28:48.071446235 +0800
    最近更改:2015-11-25 21:28:48.071446235 +0800
    最近改动:2015-11-25 21:29:07.707803664 +0800
    创建时间:-
    xiaorui@xiaorui:~/test$ stat etiantian |sed -n '4p'|awk -F '[(/]' '{print $2}'
    0644
    方法3:
    xiaorui@xiaorui:~/test$ stat etiantian |awk -F '[(/]' 'NR==4 {print $2}'
    0644
    方法4:
    xiaorui@xiaorui:~/test$ stat etiantian |head -4|tail -1|awk -F '[(/]' '{print $2}'
    0644

    2.linux下通过mkdir命令创建一个新目录/home/xiaorui/ett,ett的硬链接数是多少,为什么?
     在ett下再创建一个test目录,ett的硬链接数又是多少?为什么?

    xiaorui@xiaorui:~$ mkdir ett
    xiaorui@xiaorui:~$ ls -ld ett/
    drwxrwxr-x 2 xiaorui xiaorui 4096 11月 25 22:15 ett/
    xiaorui@xiaorui:~$ cd ett/
    xiaorui@xiaorui:~/ett$ mkdir test
    xiaorui@xiaorui:~/ett$ ls -ld ../ett/
    drwxrwxr-x 3 xiaorui xiaorui 4096 11月 25 22:16 ../ett/
    xiaorui@xiaorui:~/ett$ ll -i
    24512863 drwxrwxr-x  3 xiaorui xiaorui 4096 11月 25 22:16 ./
    23068674 drwxr-xr-x 34 xiaorui xiaorui 4096 11月 25 22:15 ../
    24512865 drwxrwxr-x  2 xiaorui xiaorui 4096 11月 25 22:16 test/
    xiaorui@xiaorui:~/ett$ ll -id /home/xiaorui/ett/
    24512863 drwxrwxr-x 3 xiaorui xiaorui 4096 11月 25 22:16 /home/xiaorui/ett//
    xiaorui@xiaorui:~/ett/test$ ls -lai
    24512865 drwxrwxr-x 2 xiaorui xiaorui 4096 11月 25 22:16 .
    24512863 drwxrwxr-x 3 xiaorui xiaorui 4096 11月 25 22:16 ..

    当新创建一个目录时,此目录的硬链接数为2这是因为:
    1、创建的目录本身为一个硬链接。
    2、目录ett下隐藏目录.(点号)为创建目录的有一个硬链接,因此其硬链接数为2。
      当在新创建目ett下再创建一个目录test时,ett目录的硬链接数为3,这是因为,在新创建的test目录下有一个隐藏..(两个点号)为ett的又一个硬链接。

    3.请执行命令取出linux中wlan0的IP地址(请用cut,有能力者也可分别用awk,sed命令答)。

    方法1:
    xiaorui@xiaorui:~$ ifconfig wlan0|grep "inet"
              inet 地址:192.168.1.111  广播:192.168.1.255  掩码:255.255.255.0
              inet6 地址: fe80::162d:27ff:fefd:c215/64 Scope:Link
    xiaorui@xiaorui:~$ ifconfig wlan0|grep "inet "
              inet 地址:192.168.1.111  广播:192.168.1.255  掩码:255.255.255.0
    xiaorui@xiaorui:~$ ifconfig wlan0|grep "inet "|awk '{print $2}'
    地址:192.168.1.111
    xiaorui@xiaorui:~$ ifconfig wlan0|grep "inet "|awk '{print $2}'|awk -F ':' '{print $2}'
    192.168.1.111
    方法2:
    xiaorui@xiaorui:~$ ifconfig wlan0|grep "inet "|cut -d ':' -f2
    192.168.1.111  广播
    xiaorui@xiaorui:~$ ifconfig wlan0|grep "inet "|cut -d ':' -f2|cut -d ' ' -f1
    192.168.1.111
    方法3:
    xiaorui@xiaorui:~$ ifconfig wlan0|grep "inet "|awk -F "[ :]" '{print $13}'
    192.168.1.111
    方法4:
    xiaorui@xiaorui:~$ ifconfig wlan0|grep "inet "|awk -F "[ :]+" '{print $4}'
    192.168.1.111
    方法5:
    xiaorui@xiaorui:~$ ifconfig wlan0|awk -F "[ :]+" 'NR==2{print $4}'
    192.168.1.111
    方法6:
    xiaorui@xiaorui:~$ ifconfig wlan0|sed -n '2p'|sed  's#^.*地址:##g'|sed 's# 广播:.*$##g'
    192.168.1.111 
    方法7:
    xiaorui@xiaorui:~$ ifconfig eth0|sed -nr '2s#^.*r:(.*)B.*$#1#gp'
    192.168.1.71
    方法8:
    xiaorui@xiaorui:~$ ifconfig eth0 | awk -F [: ] 'NR==2 { print $13 }'
    192.168.1.71

    4.请给出默认情况下eth0网卡配置文件的路径及客户端DNS的路径。
         eth0网卡配置路径:/etc/sysconfig/network-scripts/ifcfg-eth0
         客户端DNS的路径 :/etc/resolv.conf

    5.推荐老男孩老师两篇博文:
      Linux系统基础网络配置老鸟精华篇
      深入浅出route命令小结
      

  • 相关阅读:
    在UpdatePanel上使用FileUpload上传文件
    Android配置开发环境
    文件服务器共享目录设置(一)
    win2008R2的Hyperv安装Ubuntu
    Comodo Time Machine导致系统进不去
    sql2005生成sql2000脚本的时候出现“User.UserType: NoLogin 不是SQL Server 2005 的有效选项“ 的解决方案
    迅雷7偷偷上传文件导致机器变卡
    文件服务器共享目录设置(二)
    再谈Javascript原型继承
    a和a:link的区别
  • 原文地址:https://www.cnblogs.com/migongci0412/p/5003091.html
Copyright © 2011-2022 走看看