linux文本处理三剑客—grep

 

cat:concatenate 文本文件查看工具
 cat [option] filename…
 -n:给显示出来的文本行加上编号
 -b:非空行编号
 -V:显示 ^
 -E:显示行结束符$
 -T:显示制表符
 -A:显示所有控制符-A=-VET
 -s:压缩连续的空行成一行
 如:cat /etc/fstab /etc/passwd 同时查看多个文件
 df | cut -d:

tac:文本文件查看工具
 用法同cat 只是文件内容的行逆序显示

rec:文本文件查看工具
    用法同cat 只是文本文件每一行的内容倒过来显示

head:查看文件的前几行(默认10行)
  head [option] FILE
  head -n #:指定查看行数,可简写为:-#

tail:查看文件的后几行(默认10行)
  tail [option] FILE
  tail -n #:指定查看行数,可简写为:-#
     -f:查看文件尾部内容结束后不退出
      跟随显示新增的行,监控日志文件增长时非常有用
  tail -f -n0 test.txt & 后台运行日志文件监控

分屏查看命令:more,less
 more:more file
  特点:翻屏至文件尾部时自动退出

 less:less file
  man调用的就是less命令,用法同man一样

cut:剪辑命令——筛选显示文件内容
 cut [OPTION]… [FILE]…
  -d 指定分隔符(默认tab)
  -f 指定显示字段
   #: 第#个字段
   m,n:第m段,第n段
   m-n:第m段到第n段
   混合使用:m-n,#
  -c 按字符切割
  –output-delimiter=STRING指定输出分隔符
  如:cut -d:-f1,5,7 /etc/passwd

paste 合并两个文件同行号的列到一行后显示
 paste [OPTION]… [FILE1] [FILE2]…
 -d 分隔符:指定分隔符(默认用TAB)
 -s : 先将文件各自所有的行合成一行后再把两个文件的内容合并显示
  paste file1 file2 > file 产生真实合并效果
  paste  -s file1 file2

wc:world count文本统计命令
   wc [option] file
    -l:仅显示文本文件的行数
    -w:仅显示文件文件的字数
    -c:仅显示文本文件的字节数
    -m:仅显示文本文件的字符数
   
sort:文件内容排序显示
 sort [option] file
   -n:以数值大小进行排序
   -u:排序后去重
   -f:忽略字符大小写
   -r:逆序排列
   -t:指定分隔符
   -k:指定排序字段
 如:sort -nt: -k3 /etc/passwd

uniq:显示文件中的重复行(完全相同切连续的行)
 uniq [option] file
    -d:只显示重复的行
    -c:显示文件中行重复的次数
    -u:仅显示不重复的行
  常和sort 命令一起配合使用:
  sort  userlist.txt  |  uniq -c

diff:比较两个文件之间的区别
 diff [option] file1 file2
 如:diff foo.conf-broken foo.conf-works
  5c5
  < use_widgets = no
  —
  > use_widgets = yes
   注明第5行有区别(改变)

 diff 命令的输出被保存在一种叫做“补丁”的文件中,使用 -u 选项来输出“统一的(unified)”diff格式文件,最适用于补丁文件。
 patch 命令复制在其它文件中进行的改变(要谨慎使用!)
     适用 -b 选项来自动备份改变了的文件
 diff -u foo.conf-broken foo.conf-works > foo.patch
 patch -b foo.conf-broken foo.patch

linux文本处理三剑客
  grep:文本过滤工具
   sed:stream editor,流编辑器
   awk:Linux上的实现gawk,文本报告生成器

grep: Global search REgular expression and Print out the line
   用途grep:根据模式搜索文本,并将符合模式的文本行显示出来
   parttern(模式):文本字符和正则表达式的元字符组合而成的匹配条件
 grep, egrep, fgrep(不支持正则表达式搜索)

grep [OPTIONS] PATTERN [FILE…]
  –color=auto: 对匹配到的文本着色显示;
  -v: 显示不能够被pattern匹配到的行;
  -i: 忽略字符大小写
  -n:显示匹配的行号
  -c: 统计匹配的行数
  -o: 仅显示匹配到的字符串
  -q: 静默模式,不输出任何信息
  -A #:after, 显示匹配行之后相连的#行
  -B #: before, 显示匹配行之前相连的#行
  -C #:context, 显示匹配行前后各#行
       -w:整行匹配整个单词
  -E:使用扩展正则表达式 等同于egrep
  -e:多个选项间的逻辑或关系
  如:grep –e ‘cat ’  -e ‘dog’  file

REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能
  程序支持:grep, vim, less,nginx等
 分两类:
  基本正则表达式:BRE
  扩展正则表达式:ERE
 正则表达式引擎:
  采用不同算法,检查处理正则表达式的软件模块
  PCRE(Perl Compatible Regular Expressions)
 元字符分类:字符匹配、匹配次数、位置锚定、分组

 字符匹配:使用时元字符外面需再套一个[]
  .   : 匹配任意单个字符;
  []  : 匹配指定范围内的任意单个字符
  [^] :匹配指定范围外的任意单个字符
  [:digit:]所有数字
  [:upper:]所有大写字母
  [:lower:]所有小写字母
  [:alpha:]所有大小写字母
  [:alnum:]数字和大小写字母
  [:punct:]标点符号
  [:space:]空格

 匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数
  *:匹配前面的字符任意次,包括0次
     贪婪模式:尽可能长的匹配
   \:转义符
  .*:任意长度的任意字符
  \?:匹配其前面的字符0或1次
  \+:匹配其前面的字符至少1次
  \{m\}:匹配前面的字符m次
  \{m,n\}:匹配前面的字符至少m次,至多n次
  \{,n\}:匹配前面的字符至多n次 <=n
  \{m,\}:匹配前面的字符至少m次 >=n

 位置锚定:定位出现的位置
  ^:行首锚定,用于模式的最左侧
  $:行尾锚定,用于模式的最右侧
  ^PATTERN$: 用于模式匹配整行
  ^$: 空行
  ^[[:space:]]*$ :空白行
  \< 或 \b:词首锚定,用于单词模式的左侧
  \> 或 \b:词尾锚定;用于单词模式的右侧
  \<PATTERN\>:匹配整个单词

 分组:\(\):将一个或多个字符捆绑在一起,当作一个整体进行处理,如:\(root\)\+
  分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为: \1, \2, \3, …
  \1: 从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配到的字符;

  后向引用:引用前面的分组括号中的模式所匹配字符(而非模式本身)
  找出帐户列表中用户名和SHELL名称一样的行

egrep及扩展正则表达式
 egrep = grep -E
 egrep [OPTIONS] PATTERN [FILE…]
 扩展正则表达式的元字符:
 字符匹配:
  . 任意单个字符
  [] 指定范围的字符
  [^] 不在指定范围的字符

 次数匹配:
  *:匹配前面字符任意次
  ?: 0或1次
  +:1次或多次
  {m}:匹配m次
  {m,n}:至少m,至多n次

 位置锚定:
  ^  :行首
  $  :行尾
  \<, \b :语首
  \>, \b :语尾
  分组:
  ()
 
 后向引用:\1, \2,
 或者:
  a|b
  C|cat: C或cat
  (C|c)at:Cat或cat

原创文章,作者:爱情防火墙,如若转载,请注明出处:http://www.178linux.com/29274

(0)
上一篇 2016-08-05 16:13
下一篇 2016-08-05 16:13

相关推荐

  • 27期第一周学习小结

    第一周 1. 描述计算机的组成及其功能。 计算机主要组成部分以下五种:运算器,控制器,存储器,输入设备,输出设备。 运算器的功能是对数据进行算术运算与逻辑运算,就是对数据进行加工处理。 控制器的功能是调度二进制程序,数据,内存寻址,以及协调计算机输入设备和输出设备等各计算机部件之间的正常工作。 存储器的功能是存储二进制指令和数据。存储器是编址存储单元。 输入…

    Linux干货 2017-07-15
  • xen虚拟化基础篇

    Xen介绍:  xen是一个开放的源代码虚拟机监视器,有剑桥大学研发。它打算在单个计算机上运行多达128个满足特征的操作系统,操作系统必须进行显示地修改("移植")以在Xen上运行(但是提供对用户应用的兼容性)。这使得无需特殊硬件支持,就能达到高性能的虚拟化。 Xen由三部分组成:     第一部分…

    Linux干货 2015-08-26
  • Redis应用场景

    1.  MySql+Memcached架构的问题   实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题:   1.MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据…

    Linux干货 2016-03-22
  • PHP安全模式详解(PHP5.4安全模式将消失)

    1. 安全模式      一直没有用过php的safe_mode安全模式,以此说明作为日后参考。      PHP 的安全模式是为了试图解决共享服务器(shared-server)安全问题而设立的。在结构上,试图在 PHP 层上解决这个问题是不合理的,但修改 web 服务器层和操作系统层显得非常不现…

    Linux干货 2015-06-02
  • 第四周

    第四周 1.复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其他用户均没有任何访问权限。 [root@node1 ~]# cp -r /etc/skel/ /home/tuser1 [root@node1 ~]# chmod -R go= /home/tuser1 [root@node1 ~]# ls -…

    Linux干货 2017-07-26
  • RHCE系列之ntp服务器—-实践篇

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1319520 上篇Linux实战部署系列之ntp服务器—-理论篇为大家介绍时间的相关概念和ntp的原理,本篇博文将带大家一起部署生产环境中实现简单…

    Linux干货 2016-08-15