2007-06-26

管线命令

关键字: Linux 学习

       bash命令执行时会输出数据,如果这些数据需要经过几道手续之后才能得到我们想要的格式,应该如何设定?这就涉及到管线命令的问题。管线命令使用的是“|”界定符号。
   
       假设我们要读取last指令中root登入的次数,应该怎么做?注意,我们只需要次数,步骤如下:
  1. 执行last,将这个月的所有人的所有登入数据取出来;
  2. 使用grep将上面的输出数据(stdout)中的root撷取出来,其他的不要;
  3. 使用wc这个可以计算行数的指令对上一步取到的数据计算行数;
        整个命令这样写:
      
          last   |   grep   root   |   wc -l

        管线命令“|”只能处理经由前一个指令传来的正确信息,也就是标准输出信息,对于标准错误信息并没有直接处理的能力。



cut指令

      
cut主要的用途在于将同一行的数据进行分解,最常用来分析一些数据或文字数据的时候,这是因为有时候我们会以某些字符作为分隔参数,然后将数据加以切割,以取得我们需要的数据。
语法:

cut   -d   "分隔字符"   [-cf]   fields
参数说明:
-d:后面接的是分隔字符,默认是空格符
-c:后面接的是第几个字符
-f:后面接的是第几个区块

范例:
cat   /etc/passwd   |   cut   -d   ":"    -f   1
//   将passwd文件中的每一行里的":"用作分隔符,列出第一个区块,也就是姓名所在

last   |   cut   -d   " "   -f 1
//    以空格作为分隔符,并列出第一个区块

last   |   cut   -c   1-20
//   将last之后的数据,每一行的1-20个字符取出来.

sort命令

       sort命令同样是很常用的指令,因为我们常常需要比较一些信息。

语法:
sort   [-t   分隔符]   [(+开始)(-结束)]   [-nru]
参数说明:
-t   分隔符:使用分隔符隔开不同区块,默认是tab
+start   -end:有第start区块排序到第end区块
-n:使用纯数字排序(否则会以字母方式排序)
-r:反向排序
-u:相同出现的一行,只列出一次

cat   /etc/passwd   |   sort   //将列出来的个人帐号排序

cat   /etc/passwd   |   sort   -t :   +2 -n
//   将个人帐号以用户ID排序(以:作分隔符,第三个为ID,但第一个代号为0)

cat   /etc/passwd   |   sort   -t  :   +2  -nr   //   反向排序

wc命令
      
       wc命令是用来计算文件内容的一个工具组。
语法:
wc    [-lmw]
参数说明:
-l:多少行
-m:多少字符
-w:多少字

范例:
cat   /etc/passwd   |   wc   -l    //这个文件有多少行

cat   /etc/passwd   |   wc   -w   //这个文件里有多少字

uniq命令

       uniq用来删除重复的行从而只显示一个

语法:uniq
范例:
last   |   cut   -d   " "   -f 1    |   sort   |   uniq

tee命令:

       当我们使用重定向命令的时候,屏幕上可能就不会显示任何信息。如果我们需要将数据同时显示在屏幕上和文件中呢?这个时候就需要tee指令了。

范例:
last   |   tee   last.list   |   cut   -d   " "   -f   1

tr命令

语法
tr   [-ds]   SET1
参数说明:
-d:删除SET1这个字符串
-s:取代重复的字符

last   |   tr   '[a-z]'   '[A-Z]'   // 将小写改成大写

cat   /etc/passwd   |   tr   -d   :   //   " : "这个符号在/etc/passwd中不见了

cat   /home/test/dostxt   |   tr   -d   '\r'   >   dostxt-noM   //将dostxt文件中的行尾符号^M去掉

       这个指令也可以写在正则表示法里,因为它也是以正则表示法方式取代数据。

split命令
  
       split命令用来分割文件。

语法
split   [-bl]   输入文件   输出文件前导字符
参数说明:
-b:以文件size来分
-l:以行数来分

范例
split   -l   5   /etc/passwd   test

评论
发表评论

您还没有登录,请登录后发表评论

yanshiyi
搜索本博客
最近加入圈子
存档
最新评论