niuyisheng 2014-01-26
Shell脚本编程学习5--管道命令(pipe)
分类:Linux/Unix2013-05-2716:2284人阅读评论(0)收藏举报
一、管道命令的介绍
1、管道命令“|”仅能处理经由前面一个命令传来的正确信息,也就是standardoutput的信息,对于standarderror并没有直接处理能力。
2、管道命令示意图:
command1|command2|command3
即:command1正确执行的数据传递给command2,command2正确执行的数据传递给command3。
3、在每个管道后面接的第一个数据必须是命令,而且这个命令必须能够接收standardinput的数据才行,这样的命令才是管道命令。
二、选取命令:cut、grep
将一段数据以行为单位进行分析,取出我们所想要的,或者经分析关键字,取出我们所想要的那一行。
1、cut
(1)作用:在一行信息中取出某部分我们想要的。
(2)语法:
cut-d'分隔符'-ffields用于分隔字符
cut-c字符范围用于排列整齐的信息
(3)参数:
-d:后面接分隔符,与-f一起使用
-f:依据-d的分隔符将一段信息切割成数段,用-f取出第几段的意思
-c:以字符为单位取出固定字符区间。
(4)例子:
上面就是取出以:为分隔符的第一段数据。
上面是取出以:为分隔符的第一段和第三段数据。
以上例子,说明取出每一行12个字符以后的数据。
总结:
cut的主要用途在于将同一行里面的数据进行分解,最常用的使用在分析一些数据或文字数据的时候。以某些字符当作切割的参数,然后来将数据加以切割,以取得我们所需要的数据。
2、grep
(1)作用:分析一行信息,若当中有我们所需要的信息,就将该行拿出来。
(2)语法:grep[-acinv][--color=auto]'查找字符串'filename
(3)参数:
-a:将binary文件以text文件的方式查找数据
-c:计算找到‘查找字符串’的次数
-i:忽略大小写的不同
-n:顺便输出行号
-v:反向选择,即显示出没有‘查找字符串’内容的一行
--color=auto:可以将找到的关键字部分加上颜色显示
-A:后面可加数字,为after的意思,除了列出该行外,后续的n行也列出来
-B:后面可加数字,为befer的意思,除了列出该行外,前面的n行也列出来
(4)例子:
三、排序命令:sort、wc、uniq
1、sort:
(1)作用:排序,可以按照不同的数据类型排序
(2)语法:sort[-fbMnrtuk][fileorstdin]
(3)参数:
-f:忽略大小写
-b:忽略最前面的空格符部分
-M:以月份的名字来排序,英文月份
-n:使用纯数字排序(默认是一文字类型来排序的)
-r:反向排序
-t:分隔符,默认是用TAB键来分割的
-u:uniq相同的数据中,仅出现一行代表
-k:以那个区间来进行排序
(4)例子:
默认以文字类型来排序:
以:来分隔,以第三列来排序:
以:来分隔,以第三列的数字排序:
2、wc:
(1)作用:统计一个文件里有多少字、多少行、多少字符
(2)语法:wc[-lwm]
(3)参数:
-l:仅列出行
-w:仅列出多少字(英文单字)
-m:多少字符
(4)例子:
使用last可以输出登录者,但是last最后两行并非帐号内容
那么用下面的一行命令即可取得这个月登录系统的总人次
3、uniq:
(1)作用:将重复的数据仅列出一个显示
(2)语法:uniq[-ic]
(3)参数:
-i:忽略大小写字符的不同
-c:进行计数
(4)例子:
四、双向重定向:tee
1、作用:可以同时将数据流送与文件与屏幕
2、语法:tee[-a]file
3、参数:
-a:以累加的方式,将数据加入file中
4、例子:
五、字符转换命令:tr、col、join、paste、expand
1、tr:
(1)作用:删除一段信息当中的文字,或者进行文字信息的替换。
(2)语法:tr[-ds]SET1……
(3)参数:
-d:删除信息中的SET1这个字符串
-s:替换掉重复的字符
(4)例子:
将last输出的信息中所有的小写字符变成大写字符
将/etc/passwd输出信息中的冒号删除
2、col:
(1)作用:经常用于manpage转存为纯文本文件以方便查阅的功能
(2)语法:col[-xb]
(3)参数:
-x:将tab键转换成对等的空格键
-b:在文字内部有反斜杠时,仅保留反斜杠最后接的那个字符
(4)例子:
^I就是tab,替换后:
3、join:
(1)作用:将两个文件当中有相同数据的那一行加在一起
(2)语法:join[-ti12]file1file2
(3)参数:
-t:默认以空格符分隔数据,并且对比第一个字段的数据,如果两个文件相同,则将两条数据连成一行,且第一个字段放在第一个
-i:忽略大小写
-1:代表第一个文件要用哪个字段来分析的意思
-2:代表第二个文件要用哪个字段来分析的意思
(4)例子:
注意:在使用join之前,你所需要处理的文件应该要事先经过排序处理的。
4、paste:
(1)作用:直接将相同行的数据贴在一起,中间以tab键隔开
(2)语法:paste[-d]file1file2
(3)参数:
-d:后面可接分隔符,默认是tab键来分隔的
-:如果file部分习写成-,表示来自standardinput的数据意思。
(4)例子:
5、expand:
(1)作用:将tab键转成空格键
(2)语法:expand[-t]file
(3)参数:
-t:后面可以接数字,一般来说一个tab键可以用8个空格键替换
(4)例子:
六、切割命令:split
1、作用:将一个大文件依据文件大小或行数来切割成为小文件,快速又有效
2、语法:split[-bl]filePREFIX
3、参数:
-b:后面可以接切割成的文件大小,可以加单位,如:b、k、m等
-l:以行数来进行切割
PREFIX:代表前导符,可以作为切割文件的前导文字。
4、例子:
七、参数代换:xargs
1、作用:产生某个命令的参数的意思,xargs可以读入stdin的数据,并且以空格符或断行字符进行分辨,将stdin的数据分隔成为arguments
2、语法:xargs[-0epn]command
3、参数:
-0:如果输入的stdin有特殊字符,例如`、\空格等,这个参数可以将它还原成一般字符。
-e:EOF
-p:在执行每个命令时都会询问用户
-n:后面接次数,每次command命令执行时,要使用几个参数的意思。
当xargs后面没有接任何的命令时,默认是echo来进行输出
4、例子:
八、关于减号-的用途
(1)作用:
(2)语法:
(3)参数:
(4)例子:
(1)作用:
(2)语法:
(3)参数:
(4)例子: