Chinaunix首页 | 论坛 | 博客
  • 博客访问: 114491
  • 博文数量: 28
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 202
  • 用 户 组: 普通用户
  • 注册时间: 2014-05-31 21:51
个人简介

諸惡莫做,眾善奉行,自淨其意!

文章分类

全部博文(28)

文章存档

2018年(1)

2017年(3)

2015年(3)

2014年(21)

我的朋友

分类: LINUX

2014-09-22 17:20:40

    我们以一个管道命令行来理解过滤器的含义:cat *.py | grep math|sort|less。上述命令主要是从当前的文件夹中合并python脚本文件,然后从合并的文件中寻找包含有“math”字符串的行,将匹配到的行就行排序,最后用less显示结果。通过管道线的组合,能够方便简单地把多个程序组合起来,在CLI界面中非常方便有用,所以一个程序设计为能够在管道线中使用是很重要的,通常地,我们可以把这样的程序称为过滤器,如cat,grep和sort都可以成为过滤器。更精确的讲,过滤器是任何能够从标准输入读取文本数据并向标准输出写入文本数据(每次一行)的程序,因此严格来说,管道线中的第一个和最后一个程序不必是过滤器。如本命令中,less并不是每一次一行地将数据写道标准输出中(每次一屏),所以less不是过滤器。

    下表列举了UNIX/Linux中较为常用和重要的过滤器,本文和另外其它几篇博文会逐一进行介绍(awk和perl是编程语言不进行介绍)。

过滤器 参阅     作用
awk  perl 编程语言:操作文本
cat split,tac,rev 组合文件;复制标准输入到标准输出
colrm
cut,join,paste 删除指定的数据列
comm cmp,diff,sdiff 比较两个有序文件,显示区别
cmp comm,diff,sdiff 比较两个文件
cut colrm,join,paste 从数据中抽取指定序列
expand unexpand 将制表符转变成空格
fold fmt,pr 将长行格式转化成较短的行
fmt fold,pr 格式化段落,从而使它们看上去更漂亮
grep look,strings 选择包含指定模式的行
head tail 从数据的开头选择行
join colrm,cut,paste 基于公用字段,组合数据列
look grep 选择以指定模式开头的行
nl wc 创建行号
paste colrm,cut,join 组合数据列
perl awk 编程语言
pr fold,fmt 将文本格式化为页或列
rev cat,tac 没行数据中的字符反序排列
sdiff cmp,comm,diff 比较两个文件,显示区别
sed tr 非交互式文本编辑
sort tsort,uniq 排序数据;检查数据是否有序
split cat 将大文件分隔成较小的文件
strings grep 在二进制文件中搜索字符串
tac cat,rev 组合文件,同时将文本行的顺序反转
tail head 从数据的末尾选择行
tr sed 改变或删除选定的字符
tsort sort 根据偏序创建全序
unexpand expand 将空格转变成知表符
uniq sort 选择重复/唯一行
wc nl 统计行数,单词数和字符数
python perl 编程语言

1.cat,split,tac,rev
1.1 组合文件:cat    
cat命令语法:cat [-bns] [file...]
语法 作用
cat>file 从键盘中读取数据,创建新文件或者替换已有文件,以^D结束
cat>>file 从键盘中读取数据,追加到已有的文件
cat 显示一个已有文件
catfile2 复制文件
cat file1 file2 file3|less 组合多个文件,每一次一屏显示
cat file1 file2 file3>file4 组合多个文件,将输出结果保存到一个不同的文件中
cat file1 file2 file3 | program 组合多个文件,将输出管道传送给另一个程序
    cat命令选项:
    -n(number,数字)选项在没行前面加一个行号
    -b(blank,空白)选项和-n选项一切使用,告诉cat不要对空白行编号
    -s(squeeze,挤压)选项将多个连续的空白行替换为一个空白行

1.2划分文件:split
    split语法:split [-d] [-a num] [-l lines] [file [prefix]]
    num是创建文件名是用作文件名后缀的字符或数字的数量;lines是每个新文件所包含的最大数量;file是输入文件的名称;prefix是输出文件是使用的名称的前半部分(完整的名词由prefix和后缀的字符或数字组成)。
    默认情况,即split file时,将文件file分成多个含有1000行数据的小文件,小文件的名字一次为xaa,xab,xac...。-d可以将后缀由字母改为数字(默认时两位数:00-99),-a num可以改变后缀的字符或数字的数量,-l lines可以改变每一个输出的小文件的行数,prefix可以自己命名输出文件的名字的前半部分。

1.3组合文件时反转文本行的顺序:tac
    tac的语法:tac [file...],tac的时cat的反向拼写,语法的使用基本上一致,只是输出的结果是把文本行的顺序反转了,第一行变成最后一行,最后一行变成第一行。

1.4 反转文本行中字符的顺序:rev
    语法:rev [file...],tac程序是将文件中各行的顺序反转,但每行中字符的顺序没变化;rev则是将文件中每一文本行中的字符的顺序反转,而文件中各行的顺序不变。

2.head,tail:从数据开头或末尾选择数据行
    语法:head [-n lines];tail [-n lines]    其中lines是希望选取的数据行的数量,可以是正整数,也可以是负整数,默认情况下lines是5。

阅读(2226) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~