Redhat7.0下文本处理工具的使用

来源:互联网 发布:mac win7升级win10 编辑:程序博客网 时间:2024/06/05 14:15

前面给大家介绍了vim及gedit,今天给大家介绍几个常用的文本处理工具。

一.diff

diff 命令用于比较两个文件的内容 ,以了解其区别。它还可用于创建补丁文件。补丁文件用于在企业环境的多台计算机之间对相似文件进行更改。

diff 【options】file1 file2

这里写图片描述

我们新建file1 file2 来试试这个命令:

这里写图片描述

这里写图片描述

这里写图片描述

为了能实现打补丁这个功能,我们得先安装patch:

这里写图片描述

这里写图片描述

然后我们用diff 生成补丁文件,再用patch打补丁:

这里写图片描述

这里写图片描述

二.grep

文本搜索工具,根据用户指定的文本模式对目标文件进行逐行搜索,显示能够被模式所匹配到的行。配合正则表达式的使用可以实现强大的文本处理。

grep [OPTIONS] PATTERN [FILE]

这里写图片描述

下面我们来试试grep(我们将/etc/passwd复制到桌面来测试):

(1)过滤出只含root的行:

grep root passwd

这里写图片描述

(2)过滤出包含root的行,不区分大小写:

grep -i root passwd

这里写图片描述

(3)过滤出包含root的行,不区分大小写,并返回行号:

grep -ni root passwd

这里写图片描述

(4)统计包含root的行数:

grep -c root passwd

这里写图片描述

(5)统计不包含root的行数:

grep -cv root passwd

这里写图片描述

(6)过滤出以root开头的行:

grep ^root passwd

这里写图片描述

(7)过滤出以root结尾的行:

grep  root$  passwd

这里写图片描述

三.cut

cut 用于 剪切 文件中的文本字段或列并将 其显示到标准输出

这里写图片描述

就拿刚才的passwd试试:

(1)只要passwd文件中以‘:’为分割线的第一列:

cut -d :-f 1 passwd

这里写图片描述

(2)只要passwd文件中的第一列字符:

cut -c 1 passwd

这里写图片描述

四.sort

sort 用于排序文本数据。该数据可以位于 文件中或其他命令输出中。

sort(选项)(参数)

下面说几个常用的参数:

-d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符;

-n: 依照数值的大小排序;

-r:以相反的顺序来排序;

-t<分隔字符>:指定排序时所用的栏位分隔字符;

-u:忽略相同行使用

+<起始栏位>-<结束栏位>:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。

我们先编写一个文件试试这个sort:

这里写图片描述

(1)如果我们直接sort 一个文件,sort将文件/文本的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

sort sort_file 

这里写图片描述

(2)如果我们想比较以‘:’为分界线的第二列数字的大小:

 sort -t : -k 2 -n sort_file 

这里写图片描述

(3)如果我们想忽略重复行:

1)sort -u sort_file

这里写图片描述

2)sort sort_file | uniq

这里写图片描述

五.tr

tr命令可以对来自标准输入的字符进行替换和删除。它可以将一组字符变成另一组字符。

(1)将输出转换成大写输出:

echo  "hello world"  | tr 'a-z' 'A-Z'

这里写图片描述

(2)删除集合里面的字符并输出:

echo  "hello world"  | tr -d 'a-g'

这里写图片描述

六.sed

sed 命令是流编辑器 ,用于对文本数据流执行编辑。假定 要处理一个文件名 , sed 将对文件中的所有行执行搜索和 替换 , 以将修改后的数据发送到标准输出 ; 即 ,其实际上 并不修改现有文件。与 grep 一样 , sed通常在管道中使 用

这里写图片描述

(1)将passwd中每行出现的sbin替换成hahahaha:

这里写图片描述

我们发现如果某一行出现了两次sbin,只会替换第一个,如果想替换全文的,就要在后面加上 ’g‘:

这里写图片描述

这样是不会改变原文件的,只会改变模式空间中的文本:

这里写图片描述

文本处理命令就介绍到这里,不是很详细,只列出了常用的,而且这些命令单独感觉威力不是很大,利用管道配合在一起威力无穷!

下面举一个小小的例子:

  现有两个文件,userfile和passwdfile,分别存储了用户的用户和密码,现在利用文本处理工具写一个脚本,来创建这些用户。

这里写图片描述

编写脚本 :

这里写图片描述

执行脚本:

这里写图片描述

再去/etc/group看看:

这里写图片描述

妥了!

————————————end——————————————

1 0
原创粉丝点击