收藏 分享(赏)

(2.13)--13. Linux系统及应用处理文本.pdf

上传人:职教中国 文档编号:21421667 上传时间:2023-11-04 格式:PDF 页数:27 大小:670KB
下载 相关 举报
(2.13)--13. Linux系统及应用处理文本.pdf_第1页
第1页 / 共27页
(2.13)--13. Linux系统及应用处理文本.pdf_第2页
第2页 / 共27页
(2.13)--13. Linux系统及应用处理文本.pdf_第3页
第3页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、处理 文本 1.grep grep命令 的 功能 是 在文 本内容 中查找 与 指定 模式(pattern)匹配的行,若 没有 指定 文件名,或者 写 的 是 连字符“-”,则 从 标准 输入 设备 读 取 数据。在 对 文本文件 内容 数据 进行 处理的 时候,grep命令 使用 频率 很 高。另外,与 之 相关 的 命令 还有 egrep和 fgrep。egrep命令 等 价 于 grep-E,fgrep命令 等价于 grep-F。grep命令 找到 与 模式 匹配 的 行 就 打印 输出 该行。所以 使用 grep命令 的 重点 是 正确 的 描 述 复合 要求 的 模式,简单 的 模式

2、 就是 要 查找 的 字符串,复杂 的 模式 需要 使用 正则表达式 描述。正则表达式 常用 部分 基本 符号 见 表 1。表 1 正则表达式 常用 部分 基本 字符 特殊 字符 说明 匹配输入字符串的 开始 位置。$匹配输入字符串的结尾位置。.匹配 任意 一个 字符。例如 a.b可以 匹配 aab、a _b、aob,不 匹配 accb。.枚举 列表,例如 0-9表示 任意 一个 数字,a bcd 匹配 abd、acd。()标记 子表达式 开始和结束位置。*匹配前面 子表达式零次或多次,例如(a b)*c可以 匹配 c、a bc、a ba ba bc。+匹配前面 子表达式一次或多次,例如(ab

3、)+c可以 匹配 abc、ab ab abc。?匹配前面 子表达式零次或一次,例如(ab)?c可以 匹配 c、abc。n n 是一个非负整数,表示 匹配 n 次。例如 o2 可以 匹配 food,不 匹配 Bob。,n n 是一个非负整数,表示 至少匹配 n 次。o1,等价于 o+;o0,等价于 o*。n,m m 和 n 均为非负整数(n=m),表示 最少匹配 n 次且最多匹配 m 次。正则 表达式 可以 分 为 基本 正则 表达式 BRE(Basic Regular Expression)和 扩展 正则 表达式 ERE(Extended Regular Expression)。扩展 表达式

4、支持 的 元 字符 更多,可以 表达 更加 复杂的 模式。涉及 正则 表达式 的 内容 很多,这里 仅 列举 一些 常用 基本 符号,更 详细 全面 的 正则表达式 知识 请 参考 相关 资料 学习。示例 1 提取 用户 user01 的 账户 信息。grep user01/etc/passwd user01:x:500:500:user01:/home/user01:/bin/bash 学习 使用 grep的时候,建议 增加“-color”的 选项,在 输出 的 行 上 会 用 颜色 突出 显示 匹 配 的 部分,有利于 清晰 地 知道 实际 匹配 了 哪些 部分。grep user01/e

5、tc/passwd-color=auto 当 频繁 使用 grep命令 的 时候 字符 输入量 大大 增加,为了 简化 输入,可以 使用 创建 别名。alias grep=grep-color=auto 之后 再 执行 grep命令 都 带有 颜色 显 明 匹配 部分。但是 当前 Bash退出 后 别名 就 失效 了,如果 希望 固定 该 别名,可以 将 上述 alias 命令 添加 在 用户 配置 文件/.bashrc中。示例 2 提取 用户 user01 的 账户 信息,同时 显示 所在 行 的 行号。grep-n user01/etc/passwd 25:user01:x:500:500

6、:user01:/home/user01:/bin/bash 打印 行号 可以 标识 输出 的 行 在 原始 文件 中 的 位置。示例 3 提取 用户 user01 的 账户 信息,并且 将 其 前 1行 一起 显示。grep-B 1 user01/etc/passwd chrony:x:498:499:/var/lib/chrony:/sbin/nologin user01:x:500:500:/home/user01:/bin/bash 使用“-B”选 项 打印 匹配 行 及其 前 面(Before)的 行,具体 数量 有“-B”选项 的 参数 n确定,示例 3.72中 n=1。相应 的

7、还有“-A”选项 打印 匹配 行 及其 后 面(After)的 行;“-C”选项 打印 匹配 行 及其 前后 的 行。示例 4 查找 当前 目录 中 的 链接 文件。ls-l|grep l lrwxrwxrwx 1 root root 5 3月 27 14:08 file2-file1 ls-l命令 是 以 长 格式 显示 目录 中 的 文件 信息,其中 第一 列 字符 表示 文件 类型,如果 是“l”就 表示 是 链接 文件。所以 grep命令 中 的 模式 就 写为“l”,表示 以 l为 开始 的 行。示例 5 统计 文件 file 1中 空行 的 数量。grep$file1|wc-l g

8、rep-c$file1 空行 就是 没有 内容 的 行,可以 描述 为 行首 之后 就是 行尾,即“$”。然后 用 管道 送给 wc命令 按照 行 进行 统计 即可。使用 grep命令 的“-c”选项 也 可以 统计 匹配 的 行数,更加 便捷。示例 6 查找/etc/passwd 文件 中 包含 bin一词 的 行。grep-w bin/etc/passwd 该 示例 要求“bin”是 一个 词 出现,而 不是 一部分,例如“sbin”就 不 应该 出现。使用 选 项“-w”限定 仅 完全 匹配 字词。示例 7 查找 用户 user01 和 user02的 账户 信息。grep-E user

9、01|user02/etc/passwd 在/etc/passwd 文件 中,每个 用户 的 账户 信息 占用 一行,且 每行 第一个 字段 就是 用户 登录名,所以 要 查找 的 就是 以 user01或者 user02开始 的 行,注意 是“或”不是“和”。符号“|”就是 表示 或者 的 意思。此处 使用 的 是 扩展 正则 表达式,所以 需 要“-E”选项。也 可以 使用 egrep命令 代替 grep-E。egrep user01|user02/etc/passwd 要 注意 基本 正则 表达式 和 扩展 正则 表达式 的 不同,对 相同 的 模式 可以 有 不同 的 匹配 结果。例如

10、“.+”,对于 基本 正则 表达式 来说,“+”是 普通 字符,所以 匹配 的 是 带有 一个 加号 的 任 意 字符;但是 对于 扩展 正则 表达式 来说,是 匹配 一个 以上 的 字符,即 非空 的 行,也就是 长度大于 0的 行。grep命令 还有 其他 一些 常用 选项 如下:-i 匹配 不 区分 大小写。-l 仅 打印 有 匹配 行 的 文件名,但 不 打印 行 内容。-L 与-l选项 功能 相反,仅 打印 没有 匹配 行 的 文件 名。-v 输出 不 匹配 模式 的 行。-o 仅 显示 匹配 部分,而 不是 整行。-I 不处理 二进制 文件。-f 从 文件 中 读取 模式。-r 递

11、归 处理 目录 中 的 文件。以上 这些 选项 的 功能 简单 明了,所以 具体 用法 不 一一 举例 说明 了。2.nl nl命令 的功能是 输出 文件 的内容 并 自动加上行号,默认不为空行添加行号,这与 cat-n稍有 不 同。nl可以将行号做比较多的显示设计,包括 指定 位数 和 是否自动补齐 0等的功能。nl命令常用选项见表 2。表 2 nl 命令常用选项 选项 功能-b,-body-numbering=STYLE 指定行号的样式 STYLE-i,-line-increment=NUMBER line number increment at each line-l,-join-bla

12、nk-lines=NUMBER group of NUMBER empty lines counted as one-n,-number-format=FORMAT insert line numbers according to FORMAT-s,-number-separator=STRING add STRING after(possible)line number-version 显示版本信息 示例 8 用 nl列出 file 1的内容。nl file1 1 root ssh:notty 14.48.124.183 2 ansadmin ssh:notty 202.90.198.2 3

13、 fedora ssh:notty 202.90.198.2 4 root ssh:notty 202.90.198.2 5 postgres ssh:notty 202.90.198.2 nl命令输出的时候,对于 文件中的空行 默认 不加行号。如果希望 每行都加行号,需要使用“-b a”选项。nl-b a file1 1 root ssh:notty 14.48.124.183 2 ansadmin ssh:notty 202.90.198.2 3 fedora ssh:notty 202.90.198.2 4 5 root ssh:notty 202.90.198.2 6 postgres

14、 ssh:notty 202.90.198.2 在“-b”选项中使用的行号样式 STYLE 取值如下:a 给所有行标记行号。t 仅为非空行标记行号。n 不标记行号。pBRE 符合基础正则表达式 BRE(Basic Regular Expression)的行会标记行号。示例 9 要求 统一输出格式,在 行号前面自动补上 0。nl-b a-n rz file1 000001 root ssh:notty 14.48.124.183 000002 ansadmin ssh:notty 202.90.198.2 000003 fedora ssh:notty 202.90.198.2 000004 000005 root ssh:notty 202.90.198.2 000006 postgres ssh:notty 202.90.198.2 在“-n”选项中使用的行号格式 FORMAT 取值如下:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报