• linux正则表达式 grep egrep用法


    shell命令执行的相应顺序

    &&

    令1 && 命令2     如果这个命令1执行成功& &那么执行这个命2

    mv myfile myfile2 && echo "if you are seeing this then mv was success!"

     

    || 

    如果| |左边的命令(命令1)未执行成功,那么就执行| |右边的命令(命令2)

    mv myfile myfile2 && echo "if you are seeing this then mv was success! "

     

    从一个审计文件中抽取第1个和第2个域,并将其输出到一个临时文件中,如果这一操作未成功,我希望能够收到一个相应邮件:

    awk '{print$1,$2}' test3 >test2 || echo "sorry the extraction didn't work " | mail root

     

    (命令1;命令2;. . .

    如果使用{ }来代替(),那么相应的命令将在子s h e l l而不是当前s h e l l中作为一个整体被执行,只有在{ }中所有命令的输出作为一个整体被重定向时,其中的命令才被放到子s h e l l中执行,否则在当前s h e l l执行。

    例子:

    如果s o r t命令执行成功了,可以先将输出文件备份,然后再打印

    test.sorted && (cp test.sorted test.sorted_bak ;lp test.sorted)

     

    经常使用的正则表达式举例

    ^                                 行首

    $                                 行尾

    ^ [ t h e ]                      t h e开头行

    [ S s ] i g n a [ l L ]              匹配单词s i g n a ls i g n a LS i g n a lS i g n a L

    [Ss]igna[lL]".                同上,但加一句点

    [ m a y M A Y ]             包含m a y大写或小写字母的行

    ^ U S E R $                  只包含U S E R的行

    [tty]$                           t t y结尾的行

    " .                                带句点的行

    ^ d . . x . . x . . x          对用户、用户组及其他用户组成员有可执行权限的目录

    ^ [ ^ l ]                        排除关联目录的目录列表

    ^[^d]                ls –l | grep ^[^d] 只显示非文件夹的文件         

    [ . * 0 ]                       0之前或之后加任意字符

    [ 0 0 0 * ]                  0 0 0或更多个

    [ iI]                             大写或小写I

    [ i I ] [ n N ]                大写或小写in

    [ ^ $ ]                         空行

    [ ^ . * $ ]                     匹配行中任意字符串

    ^ . . . . . . $                  包括6个字符的行

    [a- zA-Z]                     任意单字符

    [ a - z ] [ a - z ] *         至少一个小写字母

    [ ^ 0 - 9 " $ ]                非数字或美元标识

    [ ^ 0 - 0 A - Z a - z ]     非数字或字母

    [ 1 2 3 ]                       13中一个数字

    [ D d ] e v i c e            单词d e v i c eD e v i c e

    D e . . c e                    前两个字母为D e,后跟两个任意字符,最后为c e

    " ^ q                            ^ q开始行

    ^ . $                            仅有一个字符的行

    ^".[0-9][0-9]                以一个句点和两个数字开始的行

    ' " D e v i c e " '            单词d e v i c e

    D e [ V v ] i c e " .               单词D e v i c ed e v i c e

    [ 0 - 9 ] " { 2 " } - [ 0 - 9 ] " { 2 " } - [ 0 - 9 ] " { 4 " }      对日期格式d d - m m - y y y y

    [ 0 - 9 ] " { 3 " } " . [ 0 - 9 ] " { 3 " } " . [ 0 - 9 ] " { 3 " } " . [ 0 - 9 ] " { 3 " } I P地址格式

    [ ^ . * $ ]                     匹配任意行

    [A-Za-z]*            匹配所有单词

     

     

     

    常用的g r e p选项

    -c 只输出匹配行的计数。

    -i 不区分大小写(只适用于单字符)。

    -h 查询多文件时不显示文件名。

    -l 查询多文件时只输出包含匹配字符的文件名。

    -n 显示匹配行及行号。

    -s 不显示不存在或无匹配文本的错误信息。

    -v 显示不包含匹配文本的所有行。

    例子

    grep -v "Sort" tab2     显示不包含匹配文本的所有行

    grep -n "Sort" tab2     显示匹配行及行号

    grep -c "Sort" tab2     只输出匹配行的计数

    精确匹配: grep "01">" tab2

    grep -in "code" tab2    忽略大小写

    多次过滤

    grep -in "code" tab2 | grep "02"

     

    使用grep匹配“与”或者“或”模式

    g r e p命令加- E参数,这一扩展允许使用扩展模式匹配。例如,要抽取城市代码为2 1 9或2 1 6,方法如下:

    grep –E ‘219|216’ tab2

    g r e p允许使用国际字符模式匹配或匹配模式的类名形式。

                            等价的正则表达式

    [ [ : u p p e r : ] ]       [ A - Z ]

    [ [ : a l n u m : ] ]          [ 0 - 9 a - zA-Z]

    [ [ : l o w e r : ] ]        [ a - z ]

    [ [ : s p a c e : ] ]         空格或t a b

    [ [ : d i g i t : ] ]         [ 0 - 9 ]

    [ [ : a l p h a : ] ]       [ a - z A - Z ]

    大多数系统管理员称 / d e v / n u l l为比特池, 可以将之看成一个无底洞,有进没有出,永远也不会填满。

     

    要查看D N S服务器是否正在运行(通常称为n a m e d),方法如下

    ps -ef | grep "name"|grep -v "grep"

     

    e g r e p

    e g r e p接受所有的正则表达式,一个显著特性是可以以一个文件作为保存的字符串,然后将之传给e g r e p作为参数,为此使用- f开关。

       egrep -f par2 tab2    par2是文件,里面包括各种匹配的具体格式

     

    如果要查询存储代码3 2 L2 C C,可以使用(|)符号,意即“|”符号两边之一或全部。

    egrep '(Code|Sort)' tab2

    李世侠,网名caibird2005 , initdba , 战神

    MySQL DBA经验6年;

    Oracle DBA经验10年;

    精通MySQL HA架构,复制,备份,恢复,SQL优化;

    熟悉SHELL编程、Python编程、SQL&PL/SQL编程;

    MySQL OCP课程讲师;

    ORACLE官方认证OCM证书;

    BLOG: http://www.cnblogs.com/caibird2005 

              http://www.initdba.cn 

    Wechat: caibird2005 

    TEL :+86-186-5881-5300 +86-180-7290-8651 

  • 相关阅读:
    ASP.NET操作DataTable各种方法总结(给Datatable添加行列、DataTable选择排序等)
    SharePoint服务器端对象模型 之 使用CAML进展数据查询
    django-rest_framwork 序列化
    django模型中的抽象类
    微博与本地用户绑定
    微博三方登陆--回调接口
    微博三方登陆开发平台新建APP
    生成微博授权的url(二维码登陆页面)
    博客第三方登陆原理
    redis的pipeline使用
  • 原文地址:https://www.cnblogs.com/caibird2005/p/1436008.html
Copyright © 2020-2023  润新知