諸惡莫做,眾善奉行,自淨其意!
全部博文(28)
分类: 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 | 编程语言 |
语法 | 作用 |
cat>file | 从键盘中读取数据,创建新文件或者替换已有文件,以^D结束 |
cat>>file |
从键盘中读取数据,追加到已有的文件 |
cat
显示一个已有文件
|
|
cat |
复制文件 |
cat file1 file2 file3|less | 组合多个文件,每一次一屏显示 |
cat file1 file2 file3>file4 | 组合多个文件,将输出结果保存到一个不同的文件中 |
cat file1 file2 file3 | program | 组合多个文件,将输出管道传送给另一个程序 |