zoukankan      html  css  js  c++  java
  • linux文本处理三剑客(一)---grep

    在linux种有一句话,叫做一切皆文件。文件有个特点,它是个文本。它可以读、可以写,如果是二进制文件,它还能执行。这样的话,我们在使用linux的时候,多数时间都是要和各式各样文件打交道的。那么,熟悉文本的读取、编辑、筛选就是linux系统管理员的必备技能。

    幸而,在linux中,有三个很牛逼的文本处理工具。它们分别是:grep、sed、awk。下面我们用三篇文章来简单讲讲他们仨。

    第一个登场的,是grep。它是(global search regular expression and print out the line,全面搜索正则表达式并将其打印到命令行)的缩写。它是以行来进行搜索的,同时,以行进行输出。它可以直接使用,也可以通过管道符(“|”)来与其他命令混合使用,达到更好的切割文本的效果。

    基本用法:

    grep “选项“  ”模式“  文件

    其中,”选项“是指常用的几种功能,”模式“指要搜的正则表达式,文件则代表搜索对象。

    下面一个一个介绍:

    * 常用的一些功能选项:

    -v: 显示版本号

    -E: 默认模式为扩展正则表达式,相当于使用了egrep

    -F: 默认模式为固定字符串列表,相当于使用了fgrep

    -n: 输出行数

    -v: 反向查找

    -i: 忽略大小写

    -o:只显示被选中的表达式,不显示整行

    -w: 匹配整词,精确的单词,不是模糊匹配。单词的两边必须是非字符符号,以保证中间是一个完整的单词。

    -A 行数:匹配到搜索行以及该行下面n行

    -B 行数:匹配到搜索行以及该行上面n行

    -C 行数:匹配到搜索行以及该行上下n行

    * 常用的一些模式介绍:

    ‘^$’:空行

    ‘.‘: 任意一个字符

    [xyz]: x、y、z任意一个

    [[:space:]]: 空格及tab

    [a-zA-Z]: 相当于[[:alpha:]]

    [^123]:除了123以外的字符,这里的^和通配符里边的"^"意义完全不一样,且在正则表达式中,这些符号的意义与通配符中的意义完全不一样。如果按照通配符的标准来学习正则表达式,那就GG了~

    [a-zA-Z0-9]: 相当于[[:alnum:]]

    [A-Z]: 相当于[[:UPPER:]]

    [a-z]: 相当于[[:lower:]]

    [[:punct:]]: 相当于标点符号

    下面举几个例子,来演示以下它们怎么使用:

    我在/tmp下建立了一个test_file,抄了Bob Dylan的《make you feel my love》进去。我们来测试:

    1) cat test_file|grep -w 'love',精准查找关键词'love'.

    2) cat test_file|grep -v 'feel my love',grep不会打印带有'feel my love'的行。

    3)cat test_file |grep -A 5 'love',grep会打印找到的love行,并其下边的5行一起打印。

    4)cat test_file|grep -n '^$',输出空格行行数;若想去除空格行,可以使用grep -v '^$';若想去除注释行,可用egrep -v '#'。

    5) 去除/etc/ssh/sshd_config的空格和注释,并打印行数。其中,-v表示反向输出;-E表示使用扩展正则表达式;-n表示输出行数。而'^#|^$'则表示,以"#"开头的注释和空行。|表示“或”的意思。

  • 相关阅读:
    IDEA复制module
    input输入框限制输入数字(含小数)
    毕设周总结---3
    皮尔森相关系数算法
    毕设周总结---2
    毕设周总结---1
    解释器模式实例
    架构模式——解释器模式
    课后作业---质量属性
    软件架构师如何工作
  • 原文地址:https://www.cnblogs.com/young233/p/10860057.html
Copyright © 2011-2022 走看看