##文本处理工具##
学习目标
diff命令
patch命令
grep 命令
Cut 命令
sort 命令
uniq 命令
tr 命令
sed 命令
##diff命令
diff 命令用于比较两个文件的内容,以了解其区别。它还可用于创建补丁文件。补丁文件用于在企业环境的多台计算机之间对相似文件进行更改
##修补命令patch
patch 采用补丁文件 patchfile (包含由 diff 生成的差异列表 )并将这些差异应用于生成补丁版的一个或多个原始文件。通常,补丁版替换原始文件 ,但当指定 -b 选项时 ,可以制作备份。将用 .orig 文件名后缀重命名原始文件
patch 可用于将简单的补丁文件应用于使用以下语法的单个文件
– [[email protected] etc]# patch issue patchfile
Patching file issue
以下命令显示如何使用通过 diff -Naur 创建的补丁文件。用户更改为与从中创建补丁文件的原始目录相似的可比较目录后 ,将执行 patch
– [[email protected] orig-dir]$ patch -b < /tmp/patchfile
Patching file hosts
Patching file network
##grep 命令
grep 将显示文件中与模式匹配的行。其也可以处理标准输入
模式可以包含正则表达式元字符,因此始终为正则表达式加引号通常被视为一种好办法。在本单元后面的部分中将介
##Cut 命令
cut 用于“剪切”文件中的文本字段或列并将其显示到标准输出
##sort 命令
sort 用于排序文本数据。该数据可以位于文件中或其他命令输出中。 Sort 通常与管道一起使用
##uniq 命令
uniq“ 删除”文件中重复的相邻行。若要只打印文件中出现的唯一行(“删除”所有重复行 ),必须首先对 uniq 的输入进行排序。由于可以为uniq 指定其决策所基于的字段或列,因此这些字段或列是对其输入进行排序所必须的字段或列。如果未与选项一起使用, uniq 会使用整个记录作为决策键,删除其输入中的重复行
##tr 命令
tr 用于转字符:即,如果给定了两个字符范围,则只要发现某个字符位于第一个范围中,就会将其转换为第二个范围中对等的字符。该命令通常在 shell 脚本中使用 ,以按预期情况转换数据
tr ‘A-Z‘ ‘a-z‘ < file
##sed 命令
sed 命令是流编辑器,用于对文本数据流执行编辑。假定要处理一个文件名, sed 将对文件中的所有行执行搜索和替换 ,以将修改后的数据发送到标准输出 ; 即 ,其实际上并不修改现有文件。与 grep 一样 , sed通常在管道中使用
由于 sed 命令通常包含可以解释为 shell 元字符的字符 ,因此请按下面示例所示引用 sed 命令。默认情况下 , sed对文件中的所有行执行操作。在提供 sed 时 ,可带有地址
1.diff命令
##diff file file1 ##比较两个文件的内容
##diff -u file file1 ##比较两个文件的内容使用统一输出格式
##diff -u file file1 〉file.path ##生成补丁文件
2.patch命令
##patch file file.path ##补丁文件替换原始文件
##patch -b file file.path ##可以制作备份,用 .orig 文件名后缀重命名原始文件
3.grep 命令
##grep test passwd ##准确查找test
##grep -i test passwd ##模糊查找,忽略大小写
##grep -i test passwd -v ##反向查找
##grep -i -E “root|test” passwd ##查找两个字符root和test,忽略大小写
##grep "^test" passwd ##查找在行首的字符
##grep "test$" passwd ##查找在行尾的字符
##grep -n test passwd ##显示行号
##grep -c test passwd ##显示行数
##grep -r test passwd ##对文件进行递归式搜索
##grep westos /mnt -r ##在目录中对文件进行递归式搜索
##grep westos /mnt -r -n ##在目录中对文件进行递归式搜索,显示行号
##grep westos /mnt -r -c ##在目录中对文件进行递归式搜索,显示行数
##ifconfig eth0 | grep netmask | cut -d " " -f 10 ##找出ip
4.Cut 命令
##cut -c 1-3 passwd ##剪切passwd中1-3列
##cut -c 1,3 passwd ##剪切passwd中1和3列
##cut -d " " -f 2 file ##剪切file中第2个字段
##cut -d " " -f 2 -3 file ##剪切file中第2到3个字段
##cut -d " " -f 1-3 file ##剪切file中第1-3个字段
5.sort 命令
##sort -n westos ##按升序排列
##sort westos ##按第一个数字升序排列
##sort -r westos ##按第一个数字降序排列
##sort -rn westos ##按降序排列
##sort -rnu westos ##按降序排列仅显示唯一行
##sort -t : k 1 -n westos ##-t指定分隔符 k指定字段1升序
6.uniq 命令
##sort -rn westos | uniq -u ##显示唯一行
##sort -rn westos | uniq -n ##显示重复行
##sort -rn westos | uniq -c ##计行数
##sort westos ##按第一个数字升序排序
##sort -n westos ##按第一个数升序排序
##sort -t : k 3 -n westos ##-t指定分隔符 k指定字段3升序
##sort -t : k 1 -n westos | uniq -c ##-t指定分隔符 k指定字段1升序,计行数每行显示一次
7.tr 命令
##tr ‘a-z‘ ‘A-Z‘ < westos ##小写变大写
##tr ‘A-Z‘ ‘a-z‘ < westos ##大写变小写
8.sed 命令
## sed ‘s/sbin/westos/g’ passwd ##将文件内sbin换成westos,不同步
## sed ‘s/sbin/westos/g’ passwd -i ##将文件内sbin换成westos,将结果输入到文件
##sed -e‘s/sbin/westos/g’ -e ‘s/nologin/redhat/g‘ passwd -i ##同时转换两个字符
##cat cui ##写文件cui转换两个字符
##sed -f cui passwd ##用文件cui同时转换两个字符
##sed -f cui passwd -i ##用文件cui同时转换两个字符,将结果输入到文件
##cat passwd -b > redhat ##将有行号的passwd文件输出到redhat
##sed ‘3,5s/sbin/westos/g’ passwd ##把3-5行的sbin换为westos
##sed 5x redhat ##剪贴第五行
##sed 5p redhat ##重复第5行
##sed -n 5p westos ##单独列出第五行
##sed 5d redhat ##隐藏第5行
##sed -n 3,5p westos ##单独列出3-5行
##sed -ne 3p -ne 5p redhat ##单独列出第3行和第5行