Shell高级命令

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)例子:

相关推荐