linux符号与正则表达式

特殊符号

   >    或者1>   标准输出重定向 先把文件的内容清空  再放入新的内容

     >> 或   2>>  追加重定向  把内容放入文件的最后一行

                  1     表示执行正确的内容才能通过漏斗

     2>                标准错误重定向   错误的内容才能通过漏斗 

     2>>              错误追加重定向   eho hello >>/data/oldboy.txt   2>&1 对的错的都放入文件中

       <                 输入重定向  给文件能容分列xargs -n2 </data/num.txt  把文件内容分为两列

       <<               追加输入重定向 逐行输入内容

                           cat >>/data/oldboy.txt<<EOF

                           I
                           am
                           studying-
                           linux
                           EOF

     ~                    当前用户的家目录 root  ~  ==/root       oldboy~ ===/home/oldboy

      !                    查找并运行历史命令 !awk 包含awk的命令 运行最近的一条

                                                                history |grep awk awk历史命令

     #                    注释   或root用户的命令提示符

     $                    取出变量的内容

                            awk  $取出某一行的内容   或普通用户的命令提示符

     *                      表示所有

     \                      转义字符  或撬棍

                            \n 换行符

 

                            \b 单词边界

 

                            \r 回车

 

                            \t 横向制表符

                            \. 普通字符小数点消除.点的正则

 

     &&                  前一个命令执行成功然后执行后一个命令

     ||                      前一个命令执行失败再执行后面的命令

 

     

     $(    )      ()里的结果留下交给前面的命令处理 #cp   $(find /app/logs/ -type f -name "*.log")   /tmp/a/

     $(    )=== `` 反引号

      '   '         不具有变量置换功能,输出时所见即所得

      "  "          具有变量置换功能,解析变量输出

      ;              多条命令同时依次执行 相互不依赖

     {  }            生成序列 # echo {1..10}   echo stu{01..10} 用作备份cp   oldboy.txt{,.bak}

正则表达式

基础正则BRE  grep 、sed 、awk 

     ^       以某某字符开头

     $       以某个字符结尾

     ^$     表示空行 不是空格

     .        点表示任意字符

     *       重复上一个字符0次或>=1次

     .*      表示所以字符

     ^.*     以任意多个字符开头

     .*$    以任意多个字符结尾

     [   ]    匹配字符串内的任意一个字符,如[abc]匹配a或b或c,[a-z]匹配所有小写字母

     [^  ]   匹配不包含字符串内的任意字符,取反

     

扩展正则ERE  egrep、sed -r、awk

     +      重复上一个字符一次或一次以上,常与[ ]使用  [0-9]+匹配连续数字

     ?      重复上一个字符0次或者一次

     {n,m}重复前面a字符n到m次

     {n, }   重复前面a字符至少n次

     { ,m}  重复前面a字符最多m次

     {n}     重复前面a字符n次

     (  )     分组过滤,如()内的内容为一个整体;反向引用:如\1表示引用第一个()里面的内容

     |         匹配左边字符或者右边字符

     

使用举例 执行命令取出 linux 中 eth0 的 IP 地址

      [root@oldboyedu01-nb ~]# ifconfig eth0|awk 'NR==2'

                inet addr:10.0.0.200 Bcast:10.0.0.255 Mask:255.255.255.0

     [root@oldboyedu01-nb ~]# ifconfig eth0|awk 'NR==2'|awk '{print $2}'

              addr:10.0.0.200
     [root@oldboyedu01-nb ~]# ifconfig eth0|awk 'NR==2'|awk '{print $2}'|awk
 -F":" '{print $2}'
10.0.0.200 

 或者1 # ifconfig eth0|awk -F "[: ]+" 'NR==2{print $4}'

         2# ifconfig eth0|sed -n '2p'|sed -r 's#^.*dr:(.*)  Bc.*$#\1#g'

         3#ifconfig  eth0|sed  -nr  '2s#^.*dr:(.*)  Bc.*$#\1#gp'

如何取得/etc/hosts 文件的权限

     stat /etc/hosts |awk 'NR==4'          

     Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/root)

    stat /etc/hosts |awk -F "[(/]" 'NR==4{print $2}'

    0644

    stat /etc/hosts |sed -nr '4s#^.*\(([0-9]+).*$#\1#gp'

    0644

    stat -c%a /etc/hosts

    0644

   使用小结 sed 反向引用  awk指定分割符   

      

         

 

posted @ 2018-03-01 23:25  寂静深林丶  阅读(229)  评论(0编辑  收藏  举报