Shell高级命令

Shell脚本编程学习5--管道命令(pipe)
分类: Linux/Unix 2013-05-27 16:22 84人阅读 评论(0) 收藏 举报
一、管道命令的介绍

    1、管道命令“|”仅能处理经由前面一个命令传来的正确信息,也就是standard output的信息,对于standard error并没有直接处理能力。

    2、管道命令示意图:

          command1 | command2 | command3

          即:command1正确执行的数据传递给command2,command2正确执行的数据传递给command3。

    3、在每个管道后面接的第一个数据必须是命令,而且这个命令必须能够接收standard input的数据才行,这样的命令才是管道命令。

二、选取命令:cut、grep

    将一段数据以行为单位进行分析,取出我们所想要的,或者经分析关键字,取出我们所想要的那一行。

    1、cut

     (1)作用:在一行信息中取出某部分我们想要的。

     (2)语法:

               cut   -d  '分隔符'  -f  fields   用于分隔字符

               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] [file or stdin]

     (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)作用:经常用于man page转存为纯文本文件以方便查阅的功能

    (2)语法:col  [-xb]

    (3)参数:

                   -x:将tab键转换成对等的空格键

                  -b:在文字内部有反斜杠时,仅保留反斜杠最后接的那个字符

    (4)例子:


^I 就是tab,替换后:


    3、join:

    (1)作用:将两个文件当中有相同数据的那一行加在一起

    (2)语法:join  [-ti12]  file1 file2

    (3)参数:

                    -t:默认以空格符分隔数据,并且对比第一个字段的数据,如果两个文件相同,则将两条数据连成一行,且第一个字段放在第一个

                    -i:忽略大小写

                    -1:代表第一个文件要用哪个字段来分析的意思

                   -2:代表第二个文件要用哪个字段来分析的意思

    (4)例子:


注意:在使用join之前,你所需要处理的文件应该要事先经过排序处理的。

    4、paste:

   (1)作用:直接将相同行的数据贴在一起,中间以tab键隔开

   (2)语法:paste [-d] file1 file2

   (3)参数:

                 -d:后面可接分隔符,默认是tab键来分隔的

                  - :如果file部分习写成- ,表示来自standard input的数据意思。

   (4)例子:

    5、expand:

   (1)作用:将tab键转成空格键

   (2)语法:expand  [-t]  file

   (3)参数:

                   -t:后面可以接数字,一般来说一个tab键可以用8个空格键替换

   (4)例子:

六、切割命令:split

    1、作用:将一个大文件依据文件大小或行数来切割成为小文件,快速又有效

    2、语法:split [-bl] file PREFIX

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

你可能感兴趣的:(shell)