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