[转帖]Linux过滤器_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3553 | 回复: 0   主题: [转帖]Linux过滤器        下一篇 
caohang
注册用户
等级:少校
经验:877
发帖:78
精华:0
注册:2013-1-31
状态:离线
发送短消息息给caohang 加好友    发送短消息息给caohang 发消息
发表于: IP:您无权察看 2013-2-17 10:33:33 | [全部帖] [楼主帖] 楼主

(1)比较任意两个文件:cmp

cmp的使用只有一种情形:查看两个文件是否相同。语法为:

cmp file1 file2


cmp可以比较任何文件。

(2)比较有序文本文件:comm

comm程序一行一行地比较两个有序的文本文件。当有两个相似的文件并且希望查看它们之间的区别时,可以使用comm程序,语法:

comm [-123]file1 file2


程序可以以3列显示输出:第一列包含只有第一个文件中的行,第二列包含只有第二个文件中的行,第三行包含两个文件都有的行。-1、-2、-3选项分别抑制第一列、第二列、第三列的输出。

(3)比较无序文本文件:diff

当需要比较无序文件和比较大的文件时,可以使用diff,语法:

diff [-bBiqswy] [-c | -C lines| -u | -U lines] file1 file2 

其中,file1和file2是文本文件的名称,lines是说明上下文关系的行号。

当比较两个相同文件时,无输出。不同时,显示一组指示,遵循它可将第一个文件修改为第二个文件。

diff的输出使用3个单字符指示:c(change,改变)、d(delete,删除)和a(append,追加)。c、d、a第个字符的左边和右边都有一串行号,左边的数字指第一个文件中的行,右边指第2个文件的行。

无论何时,当diff要求改变时,它就给出每一个文件的实际行。第一个文件中的行由一个<(小于号)标记,第二个文件中的行由一个>(大于号)标记。出于可读性考虑,两组行被若干连字符(--)构成的线分隔开。

-i 选项,(case insensitive,不区分大小写);

-w(whitespace,空白行)选项忽略所有的空白符(空格和制表符);

-b选项,不忽略所有的空白符,而只忽略空白符数量上的区别;

-B选项(Blank lines,空白行)忽略所有的空白行。

其余的选项控制diff如何显示结果。-q(quiet,静止)告诉diff,当两个文件不同时,忽略所有细节。-s(same,相同),显示两个文件相同。

(4)比较文件时的输出格式:diff,sdiff

diff使用-c(context,上下文关系)时,显示存在不同的实际行,同时还显示不同行的上面和下面各两行的内容。第一个文件由*(星号)标记,第二个文件由-(连字符)标记。在两行之后,是每一个文件的摘录,显示应如何改变以让两个文件相同。

-u(unified output,统一输出)选项,类似于-c选项的输出,但没有重复行。

默认情况下,当对diff使用-c或者-u选项时,输出在每个不同点的上方和下方分别显示两行上下文。但是如果希望显示不同数量的上下文行,可用-C(大写字母“C")代替-c,-U(大写字母”u”)代替-u,后接希望显示出的数量。例

diff -C5 file1 file2            diff -U3 file1 file2


-y选项,并排输出结果。

如果喜欢可以并排输出。还有一个特殊用途的程序sdiff(side-by-side diff,可用它替代diff -y)语法为:

sdiff [-bBilsW] [-w columns] file1 file2


其中file1和file2是文件名,columns是列宽;

-l(小写L)选项,重复时只显示左边的列;

-s(same)选项,不显示重复;

-w选项,改变列的宽度。

其余选项与diff相同。

(5)差分和补丁

将一个文件转换为另一个文件时的一串指示叫一个差分(diff)。

使用差分(以一个文件重新创建另一个文件),称为应用了差分,用来应用差分的程序称为patch。

(6)抽取数据:cut

cut可以从每行中抽取特定列,也可以从每行中抽取字区域(称为字段),语法为

cut -c list [file...]


其中list是要抽取的列表,file是输入文件的名称。

使用列表告诉cut抽取哪些列时,可以指定一个或多个列号,用逗号分隔,列表中不含空格,还可以指定列的范围,用连字符连接。例 1,8,10-15。

可省略-c后的空格。

机器可读的文件数据(如Candy:Charles:345),每行称为一个记录(record)。每行的各个部分称为字段(field),而充当字段分隔符的字符称为定界符(delimiter)。常见的定界符有逗号、空格、制表符和空白符(也就是制表符和空格的组合)。

抽取字段的命令语法为

cut -f list [-d delimiter] [-s] [file...]


其中,list是抽取字段的列表,delimiter是分隔字段所用的定界符,file是输入文件的名称。

cut -f 1 -d ":" /etc/passwd | sort   (-f, -d 可省略空格)

(7)组合数据列:paste

paste程序组合数据列,有极大的灵活性,可将几个文件组成一个大表,也可将连续的数据行组合起来,构建数据列。我们集中讨论paste程序最可用的特性:组合分离的文件,其它可参阅说明书页(man paste)。

语法: paste [-d char...] [file...]

其中char是用作分隔符的字符,而file是输入文件的名称。

默认情况下,paste在每两列实体之间放一个制表符字符,而Unix假设制表符为每8个位置一个,且以位置1为起点,即位置1,9,17,25等。为使用非制表符作定界符,可使用-d选项,后面一个括在单引号中的备选字符。如果指定不止一个定界符,paste将轮流使用定界符。

该贴被lusxingbao编辑于2013-3-19 10:33:16

该贴被lusxingbao编辑于2013-3-19 10:37:11



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论