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

相关推荐

  • 非常不错的编程技术教程

    下面是一些非常不错的编程教程,当然,全是英文版的。不过因为是新手教程,所以非常容易阅读,可以在学习技术的同时加强一下自己的英语阅读能力。 如果你是一个新手,建议你把本页设为你的收藏夹。C Introduction to C Programming C Optimization Tutorial Compiling C and C…

    Linux干货 2016-05-10
  • 如何练好yum的一招一式

      工作时间越久,就越有这样一个深刻体会,一个新知识或者新的技能一个人学习起来并不会觉得吃力,反而要想把你学习的新知识或者新技能给讲清楚让普通人听得懂才是最难的,之前我写过一篇博客讲述linux下的RPM包管理器,今天写的练好yum的一招一式,同样都是都是在linux系统的软件包的安装、卸载、升级等功能的,为什么我们还需要yum那,记得一位大哲学家…

    Linux干货 2015-11-10
  • LVS管理平台使用手册(第一版)[原创]

     为了更好管理、维护LVS平台,本人基于Django+certmaster+func开发了一套管理平台,主要功能模块分为性能图表、数据中心、虚拟IP池、主机管理、监控模块等功能,基本上是按F5-LTM管理平台思路来设计,下面只要对这几大块功能进行说明。1、性能图表 功能说明:以小时、日、星期、月、年的图表展示LVS SERVER、VIP、SERVE…

    Linux干货 2015-03-28
  • Linux简单的磁盘分区、格式化和挂载

     一.分区: 1.查看分区fdisk -l 通过fdisk -l 查看机器所挂硬盘个数及分区情况   2.通过上面的信息,我们知道此机器中挂载两个硬盘分别是:/dev/sda和/dev/sdb, 其中sda有两个主分区/dev/sda1和sda2; 其中sdb有1个扩展类型/dev/sdb3和3个逻辑分区sd…

    Linux干货 2016-02-28
  • grep用法

    一、前言 grep是功能强大的文本处理工具,全称:global search regular expression and print out the line,grep一行一行使用正则表达式匹配文本,之后对匹配到的文本整行显示(除非使用特定的选项取反,如 grep -v)。 二、grep用法 grep命令用法:    &nbs…

    Linux干货 2015-08-24
  • N26_第一周作业

    一、描述计算机的组成及其功能。 计算机系统:是由硬件(Hardware)系统和软件(Software)系统两大部分构成。 1、硬件系统: 1)控制器(Control):是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。2)运算器(Datapath):运算器的功能是…

    2017-02-20