第5章Linux文本处理

上传人:hs****ma 文档编号:568479138 上传时间:2024-07-24 格式:PPT 页数:27 大小:1.16MB
返回 下载 相关 举报
第5章Linux文本处理_第1页
第1页 / 共27页
第5章Linux文本处理_第2页
第2页 / 共27页
第5章Linux文本处理_第3页
第3页 / 共27页
第5章Linux文本处理_第4页
第4页 / 共27页
第5章Linux文本处理_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《第5章Linux文本处理》由会员分享,可在线阅读,更多相关《第5章Linux文本处理(27页珍藏版)》请在金锄头文库上搜索。

1、Linux操作系统基础教程操作系统基础教程 人民邮电出版社人民邮电出版社安俊秀安俊秀安俊秀安俊秀 编著编著编著编著 成都信息工程大学成都信息工程大学 并行计算实验室并行计算实验室 2024/7/24目目 录录 CONTENTSCONTENTSp第第1 1章章 LinuxLinux概述概述p第第2 2章章 LinuxLinux的基本操作的基本操作p第第3 3章章 LinuxLinux文件系统与磁盘管理文件系统与磁盘管理p第第4 4章章 LinuxLinux用户及权限机制用户及权限机制p第第5 5章章 LinuxLinux文本处理文本处理p第第6 6章章 LinuxLinux多命令协作多命令协作p

2、第第7 7章章 ShellShell编程编程 p第第8 8章章 进程与设备管理进程与设备管理第5章Linux文本处理LinuxLinux操作系统基础教程操作系统基础教程 成都信息工程大学成都信息工程大学 并行计算实验室并行计算实验室 2024/7/24第第5 5章章 LinuxLinux文本处理文本处理pp5 5.1.1文字处理器文字处理器5.1.15.1.1VimVim简介介5.1.25.1.2VimVim模式模式5.1.3 Vim5.1.3 Vim环境下的境下的查找和替找和替换pp5.25.2文本切片和切块文本切片和切块5.2.15.2.1剪切命令剪切命令cutcut5.2.25.2.2粘

3、粘贴命令命令pastepaste5.2.3 5.2.3 连接命令接命令joinjoinpp5.35.3文本比较文本比较5.3.15.3.1有序文件逐行比有序文件逐行比较命令命令commcomm 成都信息工程大学成都信息工程大学 并行计算实验室并行计算实验室 2024/7/24第第5 5章章 LinuxLinux文本处理文本处理5.3.25.3.2逐逐行比行比较命令命令diffdiff5.3.35.3.3原原文件比文件比较命令命令patchpatchpp5.45.4文本格式化输出文本格式化输出5.4.15.4.1格式化格式化输出命令出命令printfprintf5.4.25.4.2简单文本格式化

4、命令文本格式化命令fmtfmt5.4.3 5.4.3 行行标命令命令nlnl5.4.4 5.4.4 指定行指定行长度命令度命令foldfoldpp5.55.5文本分析工具文本分析工具5.5.15.5.1awkawk文本分析工具文本分析工具5.5.25.5.2sedsed编辑器器成都信息工程大学成都信息工程大学 并行计算实验室并行计算实验室 2024/7/245.1.1 Vim5.1.1 Vim简介简介 在介绍 Vim 之前,先介绍 vi。 vi 是一个命令行界面下的文本编辑工具,由加州大学和伯克利大学等机构,以原来的 UNIX 行编辑器 ed 等为基础开发出来的,取 visual(可视化)单词

5、的前两个字母进行命名。在 Linux 诞生时, vi 与基本UNIX 应用程序一样被保留下来,成为管理系统的好帮手,为用户提供了一个全屏幕的窗口编辑平台。同时 vi也融合了强大的行编辑器 ex 的功能,用户在使用 vi 的同时,也可以使用行编辑器的命令。 1991 年, Bram Moolenaar 基于 vi 进行了改进和优化,发布了 Vim(vi improved 的缩写),其最大的特点是加入了对 GUI 的支持。 大多数 Linux 的发行版配备的都是 Vim,即在使用vi 命令时,指向的也是 Linux 系统中的 Vim 程序。 但有些 Linux 版本默认安装的是 Vim 的最小版本

6、(Vim-tiny),功能不全面,只支持有限的 Vim 特性。成都信息工程大学成都信息工程大学 并行计算实验室并行计算实验室 2024/7/245.1.2 Vim5.1.2 Vim模式模式 Vim 有 3 种工作模式:命令模式(或称常规模式)、插入模式、末行模式(或称 ex模式)。 1命令模式 Vim 启动后,默认进入命令模式,在任何模式下,都可以按 Esc 键返回到命令模式,可以多按几次 Esc 键,保证顺利返回到命令模式。在命令模式下,可以键入不同的命令完成选择、复制、粘贴、删除等操作。 2插入模式 在插入模式下可以编辑文本内容。在命令行模式下按 i、 a 等键可以进入插入模式,在此模式下

7、可以输入文本,但命令执行后的字符插入位置不同。 3末行模式 在命令模式下按:键进入末行模式。这时光标会移到屏幕底部,在这里可以保存修改或退出 Vim,也可以设置编辑环境、寻找字符串、列出行号等。成都信息工程大学成都信息工程大学 并行计算实验室并行计算实验室 2024/7/245.1.3 Vim5.1.3 Vim环境下的查找和替换环境下的查找和替换 Vim 具有一个十分强大的功能:查找和替换,在 Vim 环境下,根据搜索条件将光标移动到指定的位置,并用颜色标记查找出的内容。需要注意的是,在执行文本的替换工作时,可以用命令控制用户是否确认才可进行替换。 1行内搜索 命令 f 表示在光标所在的行内进

8、行搜索。例如, ft 表示在光标所在行查找字母 t,光标会定位到第一个出现字母 t 的位置,此时输入分号“;”表示继续往下找,输入逗号“,”表示反方向查找。 2搜索整个文件 在命令行模式或末行模式下,输入“/”,在屏幕的底部会出现一个“/”符号,在“/”后面输入想要查找的内容,按 Enter 键结束,当然在“/”后面也可输入正则表达式进行搜索。使用 n 命令可以重复查找,如按“/”查找,输入关键字,找出来后,按 n 键在查找到的关键字之间切换。查找到的内容会有颜色标识,方便观察。 3替换 替换文本内容是在末行模式下进行的,即如果需要替换则输入“:”进入末行模式。成都信息工程大学成都信息工程大学

9、 并行计算实验室并行计算实验室 2024/7/245.2.1 5.2.1 剪切命令剪切命令cutcut 在 Linux 中, cut 命令是剪切的意思,用于在数据中提取需要的部分,注意cut 命令是以行为对象来进行操作的。 cut 命令的格式为: cut option file 其中 option 选项指定 cut 以何种方式进行剪切,并给出剪切的具体位置, file 是 cut 命令操作对象的文件名,如果不指定 file 参数, cut 命令将读取标准输入。 option 选项参数及含义如表所示,在执行 cut 命令时,必须指定-b、 -c、 -f 标志之一。 cut 命令有 3 种剪切方式

10、:以字节为单位截取、以字符为单位截取和以域为单位截取。成都信息工程大学成都信息工程大学 并行计算实验室并行计算实验室 2024/7/245.2.2 5.2.2 粘贴命令粘贴命令pastepaste paste 命令的作用与 cut 命令正好相反,不是从文本中提取信息,而是向文本中添加信息。 paste 命令的格式为: paste option file1 file2 其中,option 选项可以省略, option 选项常用参数及含义如表所示。 file1、 file2表示进行合并的文件的名称。 通过示例了解 paste 命令的用法。 (1)将 cut_bc、 cut_z 文件中的内容合并,

11、paste 命令后不跟任何参数。 userlocalhost five$ paste cut_bc cut_z Tom:Jones:4404 今天天气很好呢 Mary:Adams:2980 明天是雾霾 Sally:Chang:9999 周六又可以放假啦 Billy:Black:6666 好开心呢 成都信息工程大学成都信息工程大学 并行计算实验室并行计算实验室 2024/7/245.2.2 5.2.2 粘贴命令粘贴命令pastepaste 查看 cut_bc、 cut_z 文件内容,结果如下。 userlocalhost five$ cat cut_bc cut_z Tom:Jones:4404

12、 Mary:Adams:2980 Sally:Chang:9999 Billy:Black:6666 今天天气很好呢 明天是雾霾 周六又可以放假啦 好开心呢 (2) -s 参数的作用。 -s 参数会将读取到的每一个文件中的内容作为一行输出。 (3) d 参数的作用。 -d 参数与 cut 命令的-d 参数的作用一样,指定分隔符,将 paste 读到的文件内容平行输出,每个文件之间使用-d 指定的分隔符连接。成都信息工程大学成都信息工程大学 并行计算实验室并行计算实验室 2024/7/245.2.3 5.2.3 连接命令连接命令joinjoin join 命令的作用与 paste 类似,简单来说

13、也就是向文本中添加信息。 join 命令的格式为: join option file1 file2 其中,option 选项可以省略,file1 和 file2是要操作的文件名,file1和file2 必须是有序的,且包含相同的列。如果文件不是有序的,则会出现“join: filename is not sorted:”的提示,若两个文件不包含相同的列,则 join 执行后的结果为空。 下面通过示例加深对 join 命令的理解,为了使文件是 join 命令可以操作的对象,做以下两步准备工作。 (1)分别对 cut_bc、 cut_z 文件进行排序,并将排好序的文本分别保存在join_file1

14、、join_file2 文件中。sort 命令可以对文本内容进行排序。 (2)通过 vi 命令,在插入模式下对 join_file1、 join_file2 文件中的文本添加行号并保存,使两个文件有共同的列。 到此准备工作就完成了,通过 join 命令对文件 join_file1、 join_file2 进行操作。 (1) join 后直接添加文件,两个文件中的文本逐行进行连接。成都信息工程大学成都信息工程大学 并行计算实验室并行计算实验室 2024/7/245.2.3 5.2.3 连接命令连接命令joinjoin (2) a、 -v 参数作用。 如果想将 join_file1 文件中的第 5

15、 行输出,可以使用-a 参数,会按照-a 后面的数字,将指定文件中的内容完全输出,数字 1 表示第一个文件,数字 2 表示第二个文件。 -a 后面必须跟数字,只使用-a 系统会报错。例如: userlocalhost five$ join -a join_file1 join_file2 join: invalid field number: join_file1 -v 参数与-a 正好相反,输出指定文件中的特有行,即只在指定文件中存在的文本。例如: userlocalhost five$ join -v1 join_file1 join_file2 5 Tom:Jones:4404 (3)

16、-1、 -2 参数作用。 默认情况下,判断两个文件能否连接,是看两个文件的第一列是否相同。如果需要改变连接字段,可以使用-1、 -2 选项,在-1、 -2 后面跟上希望使用连接字段的列号。 -1 指定第一个文件, -2 指定第二个文件。成都信息工程大学成都信息工程大学 并行计算实验室并行计算实验室 2024/7/245.3.1 5.3.1 有序文件逐行比较命令有序文件逐行比较命令commcomm comm 将逐行比较已经排好序的文本文件,如果文本是杂乱的,则可以通过sort 命令对文件进行排序。 comm 命令的格式为: comm option file1 file2 其中,option 选项

17、可以省略,选项参数及含义如表所示,其中-1、 -2、 -3 分别针对 comm 输出结果中的第 1、第 2、第 3 列。 file1、 file2 表示要操作文件的名称。 注意:因为 comm 只能对已经排好序的文件进行操作,所以要先对文件进行排序。 成都信息工程大学成都信息工程大学 并行计算实验室并行计算实验室 2024/7/245.3.2 5.3.2 逐行比较命令逐行比较命令diffdiff diff 同样也是比较文件的区别,对文件进行逐行比较,支持多种输出形式。相对于comm 命令来说, diff 有两个优点:文件可以是无序的,可以是比较大的文件集,尤其是在程序开发过程中,修改过后,利用

18、 diff 可以很方便地查找版本之间的不同之处。 diff 命令的格式为: diff option file 其中,option 选项可以省略,file 表示要操作文件的名称。 diff 支持多种输出方式,有提示符 c、 d、 a 的是默认格式。通过 option 选项参数控制输出方式,常用的有上下文格式、统一格式、并排格式。 (1)上下文格式 使用-c 选项,输出结果的格式为上下文格式。文件内容全部输出,并分为上下两部分。成都信息工程大学成都信息工程大学 并行计算实验室并行计算实验室 2024/7/245.3.2 5.3.2 逐行比较命令逐行比较命令diffdiff (2)统一格式 上下文格

19、式输出内容比较齐全,也容易理解。但是因为文件中的文本内容都要输出,导致输出的部分有重复,在文本内容很多时,会使得输出很繁琐。使用-u 选项,正好解决了这一问题。 -u 选项输出格式为统一格式。 这样输出的内容就不会出现重复,文本相同的部分只输出一次,这使得输出相对来说比较精简。同样也是先输出两个文件的信息, 部分表示文件各自的行范围,此时文本内容每行前面只会出现-、 +和“无符号”三种形式,表示的含义与上下文格式中一样。 (3)并排格式 使用-y 选项,输出格式为并排格式,文件中的对应行并排显示。成都信息工程大学成都信息工程大学 并行计算实验室并行计算实验室 2024/7/245.3.3 5.

20、3.3 原文件原文件比较命令比较命令patchpatch patch 命令用于更新文本文件,主要操作对象是 diff 生成的补丁文件,将旧版本文件更新成新文件。首先利用 diff 命令查找文件的不同,生成 patch 命令可操作的 diff 文件。操作过程如下。 userlocalhost five$ diff cut_file1 cut_file2 patch_file1 userlocalhost five$ patch cut_file1 patch_file1 patching file cut_file1 查看 cut_file1 文件中的内容,与 cut_file2 的文本内容一样

21、,表示更新成功。 userlocalhost five$ cat cut_file1 Tom Mary Sally Billy Adson Jack 当在diff后面添加参数-c或-u选项时,生成的diff文件在页眉中会包含文件名,此时patch后面可以不用添加文件名。成都信息工程大学成都信息工程大学 并行计算实验室并行计算实验室 2024/7/245.4.1 5.4.1 格式化输出命令格式化输出命令printfprintf printf 格式化并输出结果到标准输出。 printf 的命令格式为: printf format argument 其中,format 表示格式说明,此参数不能省略,

22、并将该格式应用于 argument 代表的的输入内容。例如,输出字符串。 userlocalhost five$ printf I am working at %sn company I am working at company 各类型数据输出格式如下。 userlocalhost five$ printf %d %f %s %o %x %Xn 100 100 100 100 100 100 100 100.000000 100 144 64 64成都信息工程大学成都信息工程大学 并行计算实验室并行计算实验室 2024/7/245.4.2 5.4.2 简单文本格式化命令简单文本格式化命令fm

23、tfmt fmt 命令的作用是格式化段落,使文本看上去更加整齐。默认情况下(fmt 命令后不跟选项参数),在读取文件时,将所有的制表符换成空格,同时保持单词以及空行之间的所有缩进、空格。 fmt 的命令格式为: fmt option file。 option 选项常用参数如表所示。成都信息工程大学成都信息工程大学 并行计算实验室并行计算实验室 2024/7/245.4.3 5.4.3 行行标命令标命令nlnl nl 命令的功能很简单却很实用,为文本创建行号,如果不保存, nl 只会在输出中加入行号,阅读起来更加方便,不会影响原文件的文本内容。 nl 的命令格式为: nl option file

24、,其中 option 选项的常用参数及含义如表所示。成都信息工程大学成都信息工程大学 并行计算实验室并行计算实验室 2024/7/245.4.4 5.4.4 指定行长度命令指定行长度命令foldfold fold 命令是对行进行操作,将文本行进行折叠,长行分解成短行。 fold 的命令格式为: fold option file 其中, option 选项常用参数及含义如表所示。 注意:fold 命令的默认行宽是 80,如果想调整宽度就使用-w 选项。成都信息工程大学成都信息工程大学 并行计算实验室并行计算实验室 2024/7/245.5.1 awk5.5.1 awk文本分析工具文本分析工具 a

25、wk 是一种优良的文本处理工具,其名称来源于 Bell 实验室的三名开发者 Aho、Wenberger 和 Kernighan 姓氏的首字母组合,主要完成字符串查找、替换、加工等操作,还包含可以进行模式装入、流控制、数学运算、进程控制等语句。尽管 awk 具有完全属于其本身的语法,但在很多方面类似于 shell 编程语言。它的设计 思想来源于SNOBOL4、 sed、 Marc Rochkind 设计的有效性语言、语言工具 yacc 和 lex,当然还从 C 语言中获取了一些优秀的思想。在最初创造 awk 时,其目的是用于文本处理,并且这种语言的基础是,只要在输入数据中有模式匹配,就执行一系列

26、指令。该实用工具扫描文件中的每一行,查找与命令行中给定内容相匹配的模式,如果发现匹配内容,则进行下一个编程步骤;如果找不到匹配内容,则继续处理下一行。 awk 的语法格式为: awk pattern actionfile awk 扫描 file 中的每一行,对符合模式 pattern 的行执行操作 action。也可以只有 pattern 或者 action,在 action 操作中可能会用到一些特殊字符,常用的特殊字符及含义如下表所示。成都信息工程大学成都信息工程大学 并行计算实验室并行计算实验室 2024/7/245.5.1 awk5.5.1 awk文本分析工具文本分析工具 通过 awk

27、操作 cut_bc 文件,为使结果更加清晰,在 cut_bc 文件中的文本添加行号,修改后的 cut_bc 文件内容如下。 userlocalhost five$ cat cut_bc 1 Tom:Jones:4404 2 Mary:Adams:2980 3 Sally:Chang:9999 4 Billy:Black:6666成都信息工程大学成都信息工程大学 并行计算实验室并行计算实验室 2024/7/245.5.1 awk5.5.1 awk文本分析工具文本分析工具 (1)匹配有“Sally”的行。 userlocalhost five$ awk /Sally/ cut_bc 3 Sally

28、:Chang:9999 (2)输出 cut_bc 文件中的第一列。 userlocalhost five$ awk print $1 cut_bc 1 2 3 4 (3)匹配有“Sally”的行,并输出此行的第二列。 userlocalhost five$ awk /Sally/ print $2 cut_bc Sally:Chang:9999 (4) -F 指定间隔符。 userlocalhost five$ awk -F: print $1 cut_bc 1 Tom 2 Mary 3 Sally 4 Billy成都信息工程大学成都信息工程大学 并行计算实验室并行计算实验室 2024/7/2

29、45.5.2 sed5.5.2 sed编辑器编辑器 sed 是一个精简的、非交互式的编辑器,功能与 vi 编辑器相同,但不能进入文件进行编辑,只能在命令行下输入编辑命令,擅长对文本进行编辑,如替换文本。 sed 命令后跟 s 参数执行替换操作。例如,在 cut_bc 文件中搜索 Sally 字符串,并替换为 sally。 userlocalhost five$ sed s/Sally/sally/g cut_bc 1 Tom:Jones:4404 2 Mary:Adams:2980 3 sally:Chang:9999 4 Billy:Black:6666 5 Adson:Blue:7809

30、默认情况下, sed 将输出写入标准输出,对原文件没有影响。例如,执行完上述替换操作后,查看 cut_bc 文件中的内容,会发现文件内容并没有变化,结果如下。 userlocalhost five$ cat cut_bc 1 Tom:Jones:4404 2 Mary:Adams:2980 3 Sally:Chang:9999 4 Billy:Black:6666 5 Adson:Blue:7809成都信息工程大学成都信息工程大学 并行计算实验室并行计算实验室 2024/7/245.5.2 sed5.5.2 sed编辑器编辑器 如希望在进行替换操作时,改变原始文件,可以在 sed 命令后跟“-

31、i”选项,但这种改变是永久性的,文本内容将发生变化,没有撤销的操作。例如,仍然将 Sally 字符串替换为 sally,但是命令添加-i 选项,执行命令及 cut_bc 文本变化如下。 userlocalhost five$ sed -i s/Sally/sally/g cut_bc userlocalhost five$ cat cut_bc 1 Tom:Jones:4404 2 Mary:Adams:2980 3 sally:Chang:9999 4 Billy:Black:6666 5 Adson:Blue:7809 sed还可以只对指定的行进行操作,在s参数前添加行号如“3s/sall

32、y/Sally/g”表示只对第3行进行替换操作。指定行的范围,用逗号将两个行号隔开,如“3,5s/sally/Sally/g”表示对第 3 行至第 5 行进行替换操作。最后一行一般用“$”表示。为使下面示例结果更加明显 ,在 cut_bc 文件中的“5 Adson:Blue:7809”行后添加“3 sally:Chang:9999”,修改后的文本如下。成都信息工程大学成都信息工程大学 并行计算实验室并行计算实验室 2024/7/245.5.2 sed5.5.2 sed编辑器编辑器 1 Tom:Jones:4404 2 Mary:Adams:2980 3 sally:Chang:9999 4 Billy:Black:6666 5 Adson:Blue:7809 6 sally:Chang:9999 然后只替换第 3 行的 sally,第 6 行中的 sally 并不会发生变化。执行命令及结果如下。 userlocalhost five$ sed 3s/sally/Sally/g cut_bc 1 Tom:Jones:4404 2 Mary:Adams:2980 3 Sally:Chang:9999 4 Billy:Black:6666 5 Adson:Blue:7809 6 sally:Chang:9999

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号