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
下一篇 2016-08-05

相关推荐

  • UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现

    类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。 2) 在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什么样的功能,要承担什么样的义务。一个类可以有多种职责,设计得好的类一般只有一种职责,在定义类的时候,将类的职责分解成为类的属性和操作(即方法)。 3) 类的属性…

    Linux干货 2015-04-07
  • CentOS 6.5下编译安装httpd+mysql+php过程实录

    一、安装环境     Linux系统:CentOS 6.5     Apache版本:http-2.4.12     MySQL版本:MySQL 5.6.24     PHP版本:PHP-5.6.8 …

    Linux干货 2015-05-18
  • Linux-第一周作业

    1.计算机组成及其功能 计算机主要分为三部分: A、输入单元:包括键盘、鼠标、扫描仪、手写板、触摸屏等。 B、中央处理器(CPU):含有算术逻辑、控制、记忆等单元。 C、输出单元:例如屏幕、打印机等。 我们通过输入设备(如鼠标与键盘)来将一些数据输入到PC里面,然后再由PC的功能处理成为图表或文章等信息后,将结果传输到输出设备,如屏幕或打印机上面,这是计算机…

    Linux干货 2016-07-07
  • 优云云监控:先定一个运维小目标,比方监控它10000台主机

    “想做世界最好是对的,但是最好先定一个能达到的小目标,比方说我先挣它一个亿。”,王首富云淡风轻地给各行各业提供了一个很好的Roadmap,包括我们运维。的确,如今数据中心的规模增长速度也已像一匹脱缰的野马,各地都频频建设起超大型数据中心。按工信部的定义,超大型是指规模大于等于一万个标准机架的数据中心,考虑到虚拟化技术的使用,实际上需要运维的主机规模很容易超过…

    系统运维 2016-12-05
  • SElinux管理

                                                      &nbsp…

    系统运维 2016-09-26
  • vsftpd+pam+MySQL—->实现虚拟用户认证

    一、安装所需要程序 1、安装vsftpd yum -y install vsftpd 2、安装MySQL yum -y install  mysql-server mysql-devel pam_mysql 二、创建虚拟用户账号 1.准备数据库及相关表 首先请确保mys…

    Linux干货 2016-09-19