第十二章 初识Linux三剑客

十二、初识Linux三剑客

  1. grep(Global Regular Expression Print):强大的文本内容查找工具
  2. sed(Stream EDitor):流编辑器、文本内容的编辑
  3. awk(Alfred Aho、Peter Weinberger和Brian Kernighan三个人名的姓氏首字母):强大的数据处理工具

1.grep:检索

  • 统计搜寻到的次数:-c
  • 忽略大小写:-i
  • 顺序输出行号:-n
  • 反向输出(输出没找到的):-v
  • 匹配整个单词而不是单词的一部分:-w
  • 匹配整个文本行:-x
  • 不显示文件名前缀:-h
  • 只显示文件名:-l
  • 在这里插入图片描述在这里插入图片描述

1.1 正则表达式(regexp,Regular Expression)

  1. 基础正则表达式
  2. 扩展正则表达式
  3. Perl正则表达式
(1)匹配单个字符
  • 匹配确定的某个字符 使用-i可以忽略大小写

  • 匹配任意单个字符 使用.代替任意单个字符 在这里插入图片描述

  • 匹配特殊字符 使用\元字符转义 在这里插入图片描述

  • 匹配多个字符(字符集)中的某一个[]

  • 利用字符集合区间表示[a-z] [A-Z] [0-9]

  • 排除[^a-z]

(2)元字符
  1. 表示位置

    • 匹配一行的行首/行尾:^/$

    • 匹配一个字符串的边缘:

      • \b 匹配单词边缘的空字符串
      • \B 匹配单词边缘的非空字符串
    • 匹配一个单词的两端:

      • \ > 匹配一个单词的右边缘
      • / < 匹配一个单词的左边缘
      • 在这里插入图片描述
  2. 匹配特定字符

    • 字母数字元字符: \w
    • 非字母数字元字符: \W
    • 空白字符: \s
    • 非空白字符: \S
(3)POSIX字符集

在这里插入图片描述

  • 所有字母和数字,等价于0-9a-zA-Z: [:alnum:]
  • 所有数字,等价于0-9: [:digit:]
  • 所有字母,等价于a-zA-Z: [:alpha:]
  • 大写字母,等价于A-Z: [:upper:]
  • 小写字母,等价于a-z: [:lower:]
  • 空白: [:black:]
  • 非空字符: [:graph:]
  • 标点符号: [:punct:]
(4)扩展正则表达式
  • (string1|string2)匹配任意一个字符串 在这里插入图片描述

  • 重复匹配:

    • +: 重复一次或多次
    • *: 重复零次或多次
    • ?: 重复零次或一次
    • {n,m}: 重复n到m次
    • 在这里插入图片描述
(5)正则表达式优先级
运算符说明
\转移符号
[]方括号表达式
()分组
* + ? {}限定符
普通字符按照从左至右的顺序
^ $定位符
|或运算
(6)Perl兼容正则表达式
  • 数字元字符: \d
  • 非数字元字符: \D
  • 字母数字元字符: \w
  • 非字母数字元字符: \W
  • 空白字符: \s
  • 非空白字符: \S
  • 在这里插入图片描述

2.sed:流编辑器

定义: sed是一个非交互式文本编辑器

实现: 它从文件或标准输入中每次读取一行数据复制到缓冲区里,然后读取命令行或脚本的编辑子命令,对缓冲区的文本进行编辑

适用:

  1. 非常大的文本文件,使用交互型文本编辑器操作非常慢
  2. 编辑命令比较复杂,在普通编辑器中难以完成
  3. 扫描一个大文件,并且需要经过一系列的操作

  • sed [nefri] command file

  • -n: 安静模式,只输出处理的 在这里插入图片描述

  • -e: 不编辑源文件,默认选项

  • -f: 输出一个文件

  • -r: 支持正则

2.1 子命令

  • a: 追加 在这里插入图片描述

  • c: 替换行 在这里插入图片描述

  • d: 删除 在这里插入图片描述

  • i: 插入 在这里插入图片描述

  • p: 打印 在这里插入图片描述在这里插入图片描述

  • s: 替换字符

3.awk:数据处理工具

AWK是一种强大的数据处理工具,AWK也是一种编程语言环境

awk [-Ffv] 'BEGIN{ commands } pattern { commands } END { commands }' file
  • 指定输入分隔符,fs可以是字符串或正则表达式如-F:-F fs
  • 赋值一个用户定义变量,将外部变量传递给awk:-v var=value
  • 从脚本文件中读取awk命令:-f scripfile

第一步:指定BEGIN{ commands }语句块中的语句

第二步:从文件或stdin中读取一行,执行pattern{ commands }逐行扫描文件,从第一行到最后一行重复整个过程,直到读完

第三步:当读至输入流末尾时,执行END{ commands }语句块
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值