免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1934 | 回复: 0
打印 上一主题 下一主题

vi的替换命令详解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-01 20:04 |只看该作者 |正序浏览

            

            
    :ranges/pat1/pat2/g

                其中
               
    : 这是vi的命令模式。

                    
                    
    range 是命令执行范围的指定,可以使用百分号(%)表示所有行,使用点(.)表示当前行,使用美元符号($)表示最后一行。你还可以使用行号,例如10,20表示第10到20行,.,$表示当前行到最后一行,.+2,$-5表示当前行后两行直到全文的倒数第五行,等等。
    s 表示其后是一个替换命令,类似Perl的替换函数。

    pat1 这是要查找并替换的一个正则表达式。

                                  pat2 这是希望把匹配串变成的模式的正则表达式。
                        
     g 模式修饰符,表示替换将针对行中每个匹配的串进行重复匹配,不是只匹配行中出现的第一个匹配串。
                                 i 模式修饰符,表示模式匹配时忽略大小写。
                        @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                        参考来源:UNIX Shell范例精解(第3版)
                        正则表达式元字符
                        ^            行首定位符                     /^love/        匹配所有love开头的行
                        $            行尾定位符                    /love$/          匹配所有以love结尾的行
                        .              匹配一个字符               /l..e/                匹配包含一个l,后跟两个字符,跟一个e的行
                        *             匹配0或者多个前一字符 /*love/        匹配包含0或多个空格后跟love的行
                        []            匹配一组字符窗中任一个/[Ll]ove/    匹配包含love或者Love的行
                        [x-y]       匹配某范围字符中一个   /[A-Z]ove/  匹配后跟ove的一个A到Z之间的字符
                        [^]          匹配不再指定组内的字符/[^A-Z]/      匹配不再范围A到Z之间的任意字符
                        \              用于转义字符                   /love\./       匹配包括love,后面跟一个句点符号。
                        

                        pattern\{n\}     用来匹配前面pattern出现次数。n为次数
                        pattern\{n,\}m   含义同上,但次数最少为n
                        pattern\{n,m\}   含义同上,但pattern出现次数在n与m之间
                        
                        
                        --------------------------------------------------------------------------
                        正则表达式语法
                        
一个正则表达式就是由普通字符(例如字符 a 到
z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索
的字符串进行匹配。
                        
                        这里有一些可能会遇到的正则表达式示例:
                        
                        Visual Basic VBScript 匹配
                        Scripting Edition
                        
                        /^\[ \t]*$/ "^\[ \t]*$" 匹配一个空白行。
                        
                        /\d{2}-\d{5}/ "\d{2}-\d{5}" 验证一个ID号码是否由一个2位字,一
                        个连字符以及一个5位数字组成。
                        
                        /.*/ ".*" 匹配一个 HTML 标记。
                        
                        
                        下表是元字符及其在正则表达式上下文中的行为的一个完整列表:
                        
                        字符 描述
                        
                        \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 后
                        向引用、或一个八进制转义符。例如,’n’ 匹配字符 "n"。’\n’
                        匹配一个换行符。序列 ’\\’ 匹配 "\" 而 "\(" 则匹配 "("。
                        
                        ^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的
                        Multiline 属性,^ 也匹配 ’\n’ 或 ’\r’ 之后的位置。
                        
                        $ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的
                        Multiline 属性,$ 也匹配 ’\n’ 或 ’\r’ 之前的位置。
                        
                        * 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及
                        "zoo"。 * 等价于{0,}。
                        
                        + 匹配前面的子表达式一次或多次。例如,’zo+’ 能匹配 "zo" 以
                        及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
                        
                        ? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配
                        "do" 或 "does" 中的"do" 。? 等价于 {0,1}。
                        
                        {n} n 是一个非负整数。匹配确定的 n 次。例如,’o{2}’ 不能匹配
                        "Bob" 中的 ’o’,但是能匹配 "food" 中的两个 o。
                        
                        {n,} n 是一个非负整数。至少匹配n 次。例如,’o{2,}’ 不能匹配
                        "Bob" 中的 ’o’,但能匹配 "foooood" 中的所有 o。’o{1,}’
                        等价于 ’o+’。’o{0,}’ 则等价于 ’o*’。
                        
                        {n,m} m 和 n 均为非负整数,其中n

                        
                    
               
            
            VI中的替换命令和shell中的正则表达式
            2006-10-20 22:50
            
               
                    
                        
                        
                        
vi的替换命令:
                        
    :ranges/pat1/pat2/g

                            其中
                           
    : 这是vi的命令模式。

                                
                                
    range 是命令执行范围的指定,可以使用百分号(%)表示所有行,使用点(.)表示当前行,使用美元符号($)表示最后一行。你还可以使用行号,例如10,20表示第10到20行,.,$表示当前行到最后一行,.+2,$-5表示当前行后两行直到全文的倒数第五行,等等。
    s 表示其后是一个替换命令,类似Perl的替换函数。

    pat1 这是要查找并替换的一个正则表达式。

                                              pat2 这是希望把匹配串变成的模式的正则表达式。
                                    
     g 模式修饰符,表示替换将针对行中每个匹配的串进行重复匹配,不是只匹配行中出现的第一个匹配串。
                                             i 模式修饰符,表示模式匹配时忽略大小写。
                                    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                                    参考来源:UNIX Shell范例精解(第3版)
                                    正则表达式元字符
                                    ^            行首定位符                     /^love/        匹配所有love开头的行
                                    $            行尾定位符                    /love$/          匹配所有以love结尾的行
                                    .              匹配一个字符               /l..e/                匹配包含一个l,后跟两个字符,跟一个e的行
                                    *             匹配0或者多个前一字符 /*love/        匹配包含0或多个空格后跟love的行
                                    []            匹配一组字符窗中任一个/[Ll]ove/    匹配包含love或者Love的行
                                    [x-y]       匹配某范围字符中一个   /[A-Z]ove/  匹配后跟ove的一个A到Z之间的字符
                                    [^]          匹配不再指定组内的字符/[^A-Z]/      匹配不再范围A到Z之间的任意字符
                                    \              用于转义字符                   /love\./       匹配包括love,后面跟一个句点符号。
                                    

                                    pattern\{n\}     用来匹配前面pattern出现次数。n为次数
                                    pattern\{n,\}m   含义同上,但次数最少为n
                                    pattern\{n,m\}   含义同上,但pattern出现次数在n与m之间
                                    
                                    
                                    --------------------------------------------------------------------------
                                    正则表达式语法
                                    
一个正则表达式就是由普通字符(例如字符 a 到
z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索
的字符串进行匹配。
                                    
                                    这里有一些可能会遇到的正则表达式示例:
                                    
                                    Visual Basic VBScript 匹配
                                    Scripting Edition
                                    
                                    /^\[ \t]*$/ "^\[ \t]*$" 匹配一个空白行。
                                    
                                    /\d{2}-\d{5}/ "\d{2}-\d{5}" 验证一个ID号码是否由一个2位字,一
                                    个连字符以及一个5位数字组成。
                                    
                                    /.*/ ".*" 匹配一个 HTML 标记。
                                    
                                    
                                    下表是元字符及其在正则表达式上下文中的行为的一个完整列表:
                                    
                                    字符 描述
                                    
                                    \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 后
                                    向引用、或一个八进制转义符。例如,’n’ 匹配字符 "n"。’\n’
                                    匹配一个换行符。序列 ’\\’ 匹配 "\" 而 "\(" 则匹配 "("。
                                    
                                    ^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的
                                    Multiline 属性,^ 也匹配 ’\n’ 或 ’\r’ 之后的位置。
                                    
                                    $ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的
                                    Multiline 属性,$ 也匹配 ’\n’ 或 ’\r’ 之前的位置。
                                    
                                    * 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及
                                    "zoo"。 * 等价于{0,}。
                                    
                                    + 匹配前面的子表达式一次或多次。例如,’zo+’ 能匹配 "zo" 以
                                    及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
                                    
                                    ? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配
                                    "do" 或 "does" 中的"do" 。? 等价于 {0,1}。
                                    
                                    {n} n 是一个非负整数。匹配确定的 n 次。例如,’o{2}’ 不能匹配
                                    "Bob" 中的 ’o’,但是能匹配 "food" 中的两个 o。
                                    
                                    {n,} n 是一个非负整数。至少匹配n 次。例如,’o{2,}’ 不能匹配
                                    "Bob" 中的 ’o’,但能匹配 "foooood" 中的所有 o。’o{1,}’
                                    等价于 ’o+’。’o{0,}’ 则等价于 ’o*’。
                                    
                                    {n,m} m 和 n 均为非负整数,其中n

                                    
                                
                           
                        
                        VI中的替换命令和shell中的正则表达式
                        2006-10-20 22:50
                        
                           
                                
                                    
                                    
                                    
vi的替换命令:
                                    
    :ranges/pat1/pat2/g

                                        其中
                                       
    : 这是vi的命令模式。

                                            
                                            
    range 是命令执行范围的指定,可以使用百分号(%)表示所有行,使用点(.)表示当前行,使用美元符号($)表示最后一行。你还可以使用行号,例如10,20表示第10到20行,.,$表示当前行到最后一行,.+2,$-5表示当前行后两行直到全文的倒数第五行,等等。
    s 表示其后是一个替换命令,类似Perl的替换函数。

    pat1 这是要查找并替换的一个正则表达式。

                                                          pat2 这是希望把匹配串变成的模式的正则表达式。
                                                
     g 模式修饰符,表示替换将针对行中每个匹配的串进行重复匹配,不是只匹配行中出现的第一个匹配串。
                                                         i 模式修饰符,表示模式匹配时忽略大小写。
                                                @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                                                参考来源:UNIX Shell范例精解(第3版)
                                                正则表达式元字符
                                                ^            行首定位符                     /^love/        匹配所有love开头的行
                                                $            行尾定位符                    /love$/          匹配所有以love结尾的行
                                                .              匹配一个字符               /l..e/                匹配包含一个l,后跟两个字符,跟一个e的行
                                                *             匹配0或者多个前一字符 /*love/        匹配包含0或多个空格后跟love的行
                                                []            匹配一组字符窗中任一个/[Ll]ove/    匹配包含love或者Love的行
                                                [x-y]       匹配某范围字符中一个   /[A-Z]ove/  匹配后跟ove的一个A到Z之间的字符
                                                [^]          匹配不再指定组内的字符/[^A-Z]/      匹配不再范围A到Z之间的任意字符
                                                \              用于转义字符                   /love\./       匹配包括love,后面跟一个句点符号。
                                                

                                                pattern\{n\}     用来匹配前面pattern出现次数。n为次数
                                                pattern\{n,\}m   含义同上,但次数最少为n
                                                pattern\{n,m\}   含义同上,但pattern出现次数在n与m之间
                                                
                                                
                                                --------------------------------------------------------------------------
                                                正则表达式语法
                                                
一个正则表达式就是由普通字符(例如字符 a 到
z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索
的字符串进行匹配。
                                                
                                                这里有一些可能会遇到的正则表达式示例:
                                                
                                                Visual Basic VBScript 匹配
                                                Scripting Edition
                                                
                                                /^\[ \t]*$/ "^\[ \t]*$" 匹配一个空白行。
                                                
                                                /\d{2}-\d{5}/ "\d{2}-\d{5}" 验证一个ID号码是否由一个2位字,一
                                                个连字符以及一个5位数字组成。
                                                
                                                /.*/ ".*" 匹配一个 HTML 标记。
                                                
                                                
                                                下表是元字符及其在正则表达式上下文中的行为的一个完整列表:
                                                
                                                字符 描述
                                                
                                                \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 后
                                                向引用、或一个八进制转义符。例如,’n’ 匹配字符 "n"。’\n’
                                                匹配一个换行符。序列 ’\\’ 匹配 "\" 而 "\(" 则匹配 "("。
                                                
                                                ^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的
                                                Multiline 属性,^ 也匹配 ’\n’ 或 ’\r’ 之后的位置。
                                                
                                                $ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的
                                                Multiline 属性,$ 也匹配 ’\n’ 或 ’\r’ 之前的位置。
                                                
                                                * 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及
                                                "zoo"。 * 等价于{0,}。
                                                
                                                + 匹配前面的子表达式一次或多次。例如,’zo+’ 能匹配 "zo" 以
                                                及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
                                                
                                                ? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配
                                                "do" 或 "does" 中的"do" 。? 等价于 {0,1}。
                                                
                                                {n} n 是一个非负整数。匹配确定的 n 次。例如,’o{2}’ 不能匹配
                                                "Bob" 中的 ’o’,但是能匹配 "food" 中的两个 o。
                                                
                                                {n,} n 是一个非负整数。至少匹配n 次。例如,’o{2,}’ 不能匹配
                                                "Bob" 中的 ’o’,但能匹配 "foooood" 中的所有 o。’o{1,}’
                                                等价于 ’o+’。’o{0,}’ 则等价于 ’o*’。
                                                
                                                {n,m} m 和 n 均为非负整数,其中n

                                                
                                            
                                       
                                    
                                    VI中的替换命令和shell中的正则表达式
                                    2006-10-20 22:50
                                    
                                       
                                            
                                                
                                                
                                                
vi的替换命令:
                                                
    :ranges/pat1/pat2/g

                                                    其中
                                                   
    : 这是vi的命令模式。

                                                        
                                                        
    range 是命令执行范围的指定,可以使用百分号(%)表示所有行,使用点(.)表示当前行,使用美元符号($)表示最后一行。你还可以使用行号,例如10,20表示第10到20行,.,$表示当前行到最后一行,.+2,$-5表示当前行后两行直到全文的倒数第五行,等等。
    s 表示其后是一个替换命令,类似Perl的替换函数。

    pat1 这是要查找并替换的一个正则表达式。

                                                                      pat2 这是希望把匹配串变成的模式的正则表达式。
                                                            
     g 模式修饰符,表示替换将针对行中每个匹配的串进行重复匹配,不是只匹配行中出现的第一个匹配串。
                                                                     i 模式修饰符,表示模式匹配时忽略大小写。
                                                            @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                                                            参考来源:UNIX Shell范例精解(第3版)
                                                            正则表达式元字符
                                                            ^            行首定位符                     /^love/        匹配所有love开头的行
                                                            $            行尾定位符                    /love$/          匹配所有以love结尾的行
.              匹配一个字符               /l..e/               
匹配包含一个l,后跟两个字符,跟一个e的行
                                                            *             匹配0或者多个前一字符 /*love/        匹配包含0或多个空格后跟love的行
                                                            []            匹配一组字符窗中任一个/[Ll]ove/    匹配包含love或者Love的行
                                                            [x-y]       匹配某范围字符中一个   /[A-Z]ove/  匹配后跟ove的一个A到Z之间的字符
                                                            [^]          匹配不再指定组内的字符/[^A-Z]/      匹配不再范围A到Z之间的任意字符
\              用于转义字符                   /love\./      
匹配包括love,后面跟一个句点符号。
                                                            

                                                            pattern\{n\}     用来匹配前面pattern出现次数。n为次数
                                                            pattern\{n,\}m   含义同上,但次数最少为n
                                                            pattern\{n,m\}   含义同上,但pattern出现次数在n与m之间
                                                            
                                                            
                                                            --------------------------------------------------------------------------
                                                            正则表达式语法
                                                            
一个正则表达式就是由普通字符(例如字符 a 到
z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索
的字符串进行匹配。
                                                            
                                                            这里有一些可能会遇到的正则表达式示例:
                                                            
                                                            Visual Basic VBScript 匹配
                                                            Scripting Edition
                                                            
                                                            /^\[ \t]*$/ "^\[ \t]*$" 匹配一个空白行。
                                                            
                                                            /\d{2}-\d{5}/ "\d{2}-\d{5}" 验证一个ID号码是否由一个2位字,一
                                                            个连字符以及一个5位数字组成。
                                                            
/.*/ ".*" 匹配一个 HTML 标记。
                                                            
                                                            
                                                            下表是元字符及其在正则表达式上下文中的行为的一个完整列表:
                                                            
                                                            字符 描述
                                                            
                                                            \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 后
                                                            向引用、或一个八进制转义符。例如,’n’ 匹配字符 "n"。’\n’
                                                            匹配一个换行符。序列 ’\\’ 匹配 "\" 而 "\(" 则匹配 "("。
                                                            
                                                            ^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的
                                                            Multiline 属性,^ 也匹配 ’\n’ 或 ’\r’ 之后的位置。
                                                            
                                                            $ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的
                                                            Multiline 属性,$ 也匹配 ’\n’ 或 ’\r’ 之前的位置。
                                                            
                                                            * 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及
                                                            "zoo"。 * 等价于{0,}。
                                                            
                                                            + 匹配前面的子表达式一次或多次。例如,’zo+’ 能匹配 "zo" 以
                                                            及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
                                                            
                                                            ? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配
                                                            "do" 或 "does" 中的"do" 。? 等价于 {0,1}。
                                                            
                                                            {n} n 是一个非负整数。匹配确定的 n 次。例如,’o{2}’ 不能匹配
                                                            "Bob" 中的 ’o’,但是能匹配 "food" 中的两个 o。
                                                            
                                                            {n,} n 是一个非负整数。至少匹配n 次。例如,’o{2,}’ 不能匹配
                                                            "Bob" 中的 ’o’,但能匹配 "foooood" 中的所有 o。’o{1,}’
                                                            等价于 ’o+’。’o{0,}’ 则等价于 ’o*’。
                                                            
                                                            {n,m} m 和 n 均为非负整数,其中n

               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/70379/showart_1070795.html
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP