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

相关推荐

  • Linux-第一周作业

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

    Linux干货 2016-07-07
  • 浅谈编译kernel+busybox构建拥有远程ssh登录和web功能最小linux系统(二)

    忘了介绍本文的源码的版本了 dropbear-2013.58.tar.bz2    busybox-1.21.1.tar.bz2 linux-3.13.6.tar.xz  nginx-1.4.7 基于上文,我们还差group文件没有写 root@mysql etc]# vi group  …

    Linux干货 2015-09-22
  • Linux文件查找工具之find “大宝剑”

    一、文件查找工具常用软件 locate:     locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令…

    Linux干货 2016-03-12
  • 虚拟化网络之OpenvSwitch(三)

    上一篇介绍了openvswitch利用GRE协议,搭建多台宿主机的虚拟网络,接下来在利用vxlan通道搭建一个跨多宿主机的虚拟化网络,深入了解openvswitch的功能。 一、实验拓扑 ip地址分配:  A1:192.168.10.1/24  A2:192.168.10.10/24   B1:192.168.10.2…

    系统运维 2016-03-27
  • 推荐-CentOS 6的系统启动流程

    一、POST加电自检     按下电源后ROM芯片中的CMOS程序执行并检测CPU、内存等设备是否存在并正常运行,CMOS中的程序叫BIOS,可以设置硬盘接口,网卡声卡开关之类的简单设置。一般PC机主板上有一个纽扣电池,这个电池就是给ROM供电的,可以保证主板断电后BIOS的一些基本设置不会重置。  &nb…

    Linux干货 2016-04-10
  • linux 系统基础(三)–用户和组命令使用总结

    1、列出当前系统上所有已经登录的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@node2 ~]# who   root     pts/0        2016-10-…

    Linux干货 2016-10-08