第六单元 文本处理工具 1• diff 命令用于比较两个文件的内容 , 以了解其区别。它还可用于创建补丁文件。补丁文件用于在企业环境的多台计算机之间对相似文件进行更改 diff -c ##显示上下文周围的行 diff -u ##使用统一输出格式 diff -r ##从指定的目录开始文件执行递归式比较 2 • 修补命令 patchpatch 采用补丁文件patchfile ( 包含由 diff 生成的差异列表 ) 并将这些差异应用于生成补丁版的一个或多个原始文件。通常 , 补丁版替换原始文件 , 但当指定-b 选项时 , 可以制作备份。将用 .orig 文件名后缀重命名原始文件 • patch 可用于将简单的补丁文件应用于使用以下语法的单个文件 – [root@host etc]# patch issue patchfile Patching file issue • 以下命令显示如何使用通过 diff-Naur 创建的补丁文件。用户更改为与从中创建补丁文件的原始目录相似的可比较目录后 , 将执行patch – [user@host orig-dir]$ patch -b < /tmp/patchfile Patching file hosts Patching file network 3• grep 将显示文件中与模式匹配的行。其也可以处理标准输入 • 模式可以包含正则表达式元字符 , 因此始终为正则表达式加引号通常被视为一种好办法。在本单元后面的部分中将介 绍基本正则表达式 grep -i ##执行不区分大小写搜索 grep -n ##前置返回行的行号 grep -r ##对文件执行递归式搜索,从命名目录开始 grep -c ##显示具有匹配模式的行的计数 grep -v ##返回不包含模式的行 4• cut 用于 “ 剪切 ” 文件中的文本字段或列并将其显示到标准输出 cut -d ##指定用于提取字段的分隔符(Tab是默认值) cut -f ##指定要从每行中提取的字段 cut -c ##指定要从每行中提取的文本列 5• sort 用于排序文本数据。该数据可以位于文件中或其他命令输出中。 Sort 通常与管道一起使用 sort -n ##按数值而非字符排列 sort -k ##设置排序字段 sort -t ##指定其他字段分隔符(默认为空格) 6•uniq“ 删除 ” 文件中重复的相邻行。若要只打印文件中出现的唯一行(“ 删除 ” 所有重复行 ), 必须首先对 uniq 的输入进行排序。由于可以为uniq 指定其决策所基于的字段或列 , 因此这些字段或列是对其输入进行排序所必须的字段或列。如果未与选项一起使用 ,uniq 会使用整个记录作为决策键 , 删除其输入中的重复行 uniq -u ##仅显示唯一行 uniq -d ##显示重复行 uniq -c ##每行显示一次(包括出现计数) 7• tr 用于转字符 : 即 , 如果给定了两个字符范围 , 则只要发现某个字符位于第一个范围中 , 就会将其转换为第二个范围中 对等的字符。该命令通常在 shell 脚本中使用 , 以按预期情况转换数据 • tr 'A-Z' 'a-z' <file 8• sed 命令是流编辑器, 用于对文本数据流执行编辑。假定要处理一个文件名 , sed 将对文件中的所有行执行搜索和替换 , 以将修改后的数据发送到标准输出 ; 即 , 其实际上并不修改现有文件。与 grep 一样 , sed 通常在管道中使用 • 由于 sed 命令通常包含可以解释为 shell 元字符的字符 ,因此请按下面示例所示引用 sed 命令。默认情况下 , sed对文件中的所有行执行操作。在提供 sed 时 , 可带有地址( 将命令限制用于仅那些行 )