Unix & Linux大学教程(三):过滤器、

第16章  过滤器:简介和基本操作

删除数据列用colrm:colrm  [startcol [endcol]]  如果没有endcol则删除从startcol至行末尾所有的列。

第17章  过滤器:比较和抽取

比较任意两个文件:cmp file1 file2  显示不同字节数及所在行。

比较有序文本文件:comm [-123] file1 file2  显示三列:文件1独有、2独有、共有,而参数-123可以控制哪些列不显示。

比较无序文本文件:diff  [-bBiqswy]  [-c|-Clines|-u|-Ulines]  file1 file2  其中-i忽略大小写,-w忽略所有空白,-b忽略空白符数量上的区别,

-B忽略所有空白行,-q忽略细节(相当于cmp);-c(context)列出不同处的上下文,-u(unified output)统一输出,类似于-c但没有重复行,-y并排显示。

diff的输出显示如何将第一个文件修改为第二个文件,使用3个不同的单字符:c(change)、d(delete)和a(append),每个字符左右一串行号,考虑到可读性,部分行之间用若干连字符(---)构成的线分开。

可以认为paste与cat相似,paste水平组合数据,而cat垂直组合数据。paste也可以加-d参数指定分隔符,如paste -d ‘|%‘ …将轮流使用| 和%分隔数据列。

第18章  过滤器:统计和格式化

创建行号:nl [-v start] [-i increment] [-b a] [-n]

在vi中查看不可见字符使用命令 : :set list ,关闭用   :set nolist 。

格式化行使用fold命令: fold [-s] [-w width] [file …]  其中width指定新行宽度,-s告诉fold不分割单词。

格式化段落使用fmt: fmt [-su] [-w width] [file …] 其中-u减少空格,使单词间最多一个空格,-s只拆分长行但不合并短行。

 

插入一点:Dvorak键盘的历史
现在通用的QWERTY键盘,以键盘第一排字母的左边6个字母而得名。这种键盘是1868年由Christopher Sholes申请专利,后来在全世界占据了主导地位。这种键盘的一个特点是,常用字母被有意地分隔开了,原因是为了避免打字机里的连动杆(typebar)纠结在一起。

第19章  过滤器:选取、排序、组合及变换

grep: g(global,代表全局),re(regular expression,正则表达式),p(print,打印)。

look选取以特定模式开头的行,速度比较快,只能从文件中读取不能从标准输入读取。另外look可用来查找以固特定模式开头的所有单词。

例如在vi中不能确定某个单词的拼写,可使用  :r !look simult ,该命令将所有以simult开头的单词编辑到缓冲区,可以选择正确的单词,将其余的删除。

Unix中许多程序用-i(ignore)表示忽略大小写,但有时候用-f(fold),fold是一个技术术语,表示将小写字母看成大写,反之亦然,其起源不详。

ASCII码排序(C或POSIX)和字典排序(en_US)。环境变量LC_COLLATE指定排序方式(export LC_COLLATE=C 或POSIX),使用locale命令可查看包括环境变量LC_COLLATE在内的区域设置变量的当前值。

合并两个文件中的有序数据:join [-i] [-a1|-v1] [-a2|-v2] [-1 field1] [-2 field2] file1 file2

其中-a1输出文件1中所有,-v(reverse)只输出不匹配的,-1 field1指定第一个文件的第field1个字段为连接字段。

tsort将一组偏序转换为全序,代表topological sort。

转换字符用tr:  tr  [-cds]  [set1  [set2] ]  其中,-s将重复字符压缩成一个,-d删除指定字符,-c匹配所有不在第一组中的字符。例如,tr  A-Z a-z < old  > new 和tr [:upper:] [:lower:] < old  > new 等价(:digit:等价于0-9),都是将old中的所有大写字母转换为对应小写字母并重新输出至new。

 

 

 

 

 

 

 

 

 

 

 

 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。