文本处理工具和正则表达式

文本处理工具和正则表达式:

文本查看工具:

    1,less,more 查看命令的执行的结果。区别在于less查看命令的执行结果,可以向上和向
    下翻页,而more仅可以向下翻页
    2,head 从文件的开始查看内容,默认是显示10行
    3,tail 从文件尾部查看内容,默认是显示10行
    4,cut 截取命令的执行结果,不过cut属于列截取
    5,rev 倒置命令的显示结果
    6,tac,cat 查看文件内容

分析文本工具:

    1,sort
        sort是对文本中的内容进行排序,它的排序的速度比其他命令的速度要快
            sort:
                -t 可以指定分割符
                -k 指定排序的是哪一行
    2,uniq
        uniq是对文本中出现的同样信息的次数进行排序,不过它只能够对于相邻的内容进行排
        序,所以在使用之前要先用sort进行处理后在排序
            uniq:
                -c: 显示每行重复出现的次数  
                -d: 仅显示重复过的行  
                -u: 仅显示不曾重复的行 
    3,wc
        wc是对文本的行,字节数,字符数进行统计的工具

比较文本的异同的工具(给文本打补丁):

1,diff:比较两个文件之间的不同
    diff -u foo.conf foo2.conf > foo.patch(可将补丁重定向到一个文件之中,方便后续使用) 
2,patch:复制在其它文件中进行的改变
    patch -b foo.conf foo.patch (向文件打补丁,并备份改变了的文件)

linux文本处理三剑客之一:

grep:用来搜索文件中所匹配的字符串,默认会打印出匹配的行,可使用正则表达式来过
滤

正则表达式:

基本正则表达式(BRE):
    字符匹配:  .    匹配任意单个字符  
           []   匹配指定范围内的任意单个字符,示例:[wang]   [0-9]    [a-z]   [a-zA-Z]  
           [^]  匹配指定范围外的任意单个字符  [:alnum:] 字母和数字   
           [:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z  
           [:lower:] 小写字母    
           [:upper:] 大写字母  
           [:blank:] 空白字符(空格和制表符)  
           [:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)  
           [:cntrl:] 不可打印的控制字符(退格、删除、警铃...)  
           [:digit:] 十进制数字 [:xdigit:]十六进制数字  
           [:graph:] 可打印的非空白字符  [:print:] 可打印字符  
           [:punct:] 标点符号 
    匹配字数:
           * 匹配前面的字符任意次,包括0次   贪婪模式:尽可能长的匹配  
           .* 任意长度的任意字符  
           \? 匹配其前面的字符0或1次  
           \+ 匹配其前面的字符至少1次  
           \{n\} 匹配前面的字符n次  
           \{m,n\} 匹配前面的字符至少m次,至多n次  
           \{,n\} 匹配前面的字符至多n次  
           \{n,\} 匹配前面的字符至少n次
    位置锚定:
           ^ 行首锚定,用于模式的最左侧  
           $ 行尾锚定,用于模式的最右侧 
           ^PATTERN$  用于模式匹配整行   
           ^$  空行 
           ^[[:space:]]*$  空白行  
           \< 或 \b 词首锚定,用于单词模式的左侧  
           \> 或 \b 词尾锚定,用于单词模式的右侧  
           \<PATTERN\> 匹配整个单词 
    分组:\(\) 将一个或多个字符捆绑在一起,当作一个整体处理,如:\(root\)\+ 
        分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些 变量的命
        名方式为: \1, \2, \3, ... \1  表示从左侧起第一个左括号以及与之匹配右括号之间的模式所
        匹配到的字符 
        示例:  \(string1\+\(string2\)*\)  
            \1 :string1\+\(string2\)*        
            \2 :string2 
        后向引用:
            引用前面的分组括号中的模式所匹配字符,而非模式本身

扩展正则表示式:
    字符匹配:  
        . 任意单个字符  
        [] 指定范围的字符  
        [^] 不在指定范围的字符
    次数匹配:  
        * 匹配前面字符任意次  
        ? 0或1次  
        + 1次或多次  
        {m} 匹配m次    
        {m,n} 至少m,至多n次 
    位置锚定:  
        ^ 行首  
        $ 行尾  
        \<, \b 语首  
        \>, \b 语尾 
    分组:     
        ()    
        后向引用:\1, \2, ... 

vim编辑器(vi编辑器的升级版):

三种模式:
    1,命令模式,可以执行vim中的命令
    2,插入模式,在此模式下可以输入文本
    3,扩展命令,保存,退出等

配置文件:
    全局配置文件:/etc/vimrc 
    个人配置文件:~/.vimrc 

Esc键 退出当前模式 
Esc键 总是返回到命令模式

命令模式 --> 插入模式  
    i insert, 在光标所在处输入  
    I 在当前光标所在行的行首输入  
    a append, 在光标所在处后面输入  
    A 在当前光标所在行的行尾输入  
    o 在当前光标所在行的下方打开一个新行  
    O 在当前光标所在行的上方打开一个新行

插入模式 --------> 命令模式     
命令模式 --------> 扩展命令模式
扩展命令模式 --------> 命令模式 

扩展命令模式:  
    :q 退出  :q! 强制退出,丢弃做出的修改  
    :wq 保存退出  
    :x 保存退出 
命令模式  
    ZZ 保存退出  
    ZQ 不保存退出

扩展命令模式:

按“:”进入Ex模式  
创建一个命令提示符:   处于底部的屏幕左侧 
常见命令  
    w 写(存)磁盘文件  
    wq 写入并退出  
    x 写入并退出  
    q  退出  
    q! 不存盘退出,即使更改都将丢失   
    r     filename  读文件内容到当前文件中  
    w   filename  将当前文件内容写入另一个文件  
    !command  执行命令  
    r!command  读入命令的输出 

命令模式光标跳转:

行首行尾跳转:  
    ^ 跳转至行首的第一个非空白字符  
    0 跳转至行首  
    $ 跳转至行尾
行间移动:  
    #G 或者扩展命令模式下:#   跳转至由第#行  
    G   最后一行  
    1G, gg 第一行
句间移动:  
    )  下一句 
    (  上一句 
段落间移动:  
    }  下一段 
    {  上一段 

命令模式翻屏操作:

Ctrl+f 向文件尾部翻一屏 
  Ctrl+b 向文件首部翻一屏 
  Ctrl+d 向文件尾部翻半屏 
  Ctrl+u 向文件首部翻半屏 

命令模式操作:

yy:复制一行
dd: 删除一行(剪切)
x:删除一个字符
p:粘贴一行
v:选中一个或多个字符

命令模式查找:

/PATTERN:从当前光标所在处向文件尾部查找  
?PATTERN:从当前光标所在处向文件首部查找

命令模式撤销更改:

Ctrl - r 重做最后的“撤消”更改
Ctrl - u 撤销操作

命令模式调用系统命令:

!CMD 可不用退出调用系统命令

打开多个窗口编辑:

vim -o file1 file2 横向打开
vim -O file1 file2 纵向打开
ctrl w 切换窗口

猜你喜欢

转载自blog.51cto.com/14163901/2367965