php 命令管道,管道命令的使用

bash命令执行的时候有输出数据,如果这群数据比寻经过几道手续之后才能得到我们所需要的格式,就涉及到管道命令(pipe),管道命令使用"|"这个界定符号,另外管道命令和连续执行命令是不一样的。

管道命令"|"仅能够处理经由前面一个命令传来的正确信息,也就是standard output的信息,对于standard error并没有直接处理的能力。在每个管道后面接的第一个数据必定是命令,而且这个命令必须能够接收standard input的数据才行,这样的命令才可以是管道命令。至于ls , cp , mv 等就不是管道命令,因为ls , cp , mv 并不会接受来之stdin的数据。也就是说管道命令有两个特点:

(1)管道命令仅会处理standard output,对于standard error output会予以忽略

(2)管道命令必须要能够接收来自前一个命令的数据成为standard input继续处理才行。

一、选取命令cut、grep,针对"行"来分析。

cut:

-d     :     后面接分隔符,与-f一起使用。

-f     :     依据-d的分隔符将一段信息切割成为数段,用-f取出第几段的意思。

-c     :     以字符(characters)的单位取出固定字符区间

例子:

[email protected]:~$ echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

[email protected]:~$ echo $PATH | cut -d ‘:‘ -f 3-5

/usr/sbin:/usr/bin:/sbin

[email protected]:~$ echo $PATH | cut -d ‘:‘ -f 3,5

/usr/sbin:/sbin

[email protected]:~$ echo $PATH | cut -d ‘:‘ -f 2

/usr/local/bin

grep:

-i     :     忽略大小写

-v     :     反向选择,即显示没有"查找串内容"的一行

-n     :     显示输出行号

例子:

[email protected]:~$ last | grep -n ‘lq‘

1:lq       pts/2        115.156.187.51   Fri Jun 27 10:23   still logged in

9:lq       pts/7        115.156.187.51   Wed Jun 25 20:17 - 20:37  (00:20)

10:lq       pts/6        115.156.187.51   Wed Jun 25 19:59 - 21:31  (01:31)

11:lq       pts/4        115.156.187.51   Wed Jun 25 19:56 - 21:31  (01:35)

14:lq       pts/1        115.156.187.51   Wed Jun 25 19:35 - 21:31  (01:55)

18:lq       pts/3        115.156.187.51   Tue Jun 24 16:31 - 16:31  (00:00)

74:lq       pts/3        115.156.187.51   Sat Jun 14 15:42 - 15:52  (00:09)

388:lq       pts/0        115.156.187.51   Thu Apr 17 15:26 - 15:27  (00:00)

397:lq       pts/3        115.156.187.51   Wed Apr 16 15:33 - 18:59  (03:25)

二、排序命令sort、wc、uniq

sort:

-r     :     反向排序

-t     :     分隔符

-k     :     以那个区间来进行排序

例子:

[email protected]:~$ cat /etc/passwd | sort

backup:x:34:34:backup:/var/backups:/bin/sh

bind:x:107:113::/var/cache/bind:/bin/false

bin:x:2:2:bin:/bin:/bin/sh

daemon:x:1:1:daemon:/usr/sbin:/bin/sh

[email protected]:~$ cat /etc/passwd |sort -t ‘:‘ -k 3

root:x:0:0:root:/root:/bin/bash

ubuntu:x:1000:1000:ubuntu,,,:/home/ubuntu:/bin/bash

libuuid:x:100:101::/var/lib/libuuid:/bin/sh

lrx:x:1001:1001:,,,:/home/lrx:/bin/bash

[email protected]:~$ cat /etc/passwd | cut -d ‘:‘ -f 1 | sort

backup

bin

bind

daemon

uniq:

-i     :     忽略大小写

-c     :     计数

例子:

[email protected]:~$ last | cut -d ‘ ‘ -f 1 | sort | uniq -c

1

1 graduate

13 jie

11 lq

4 lrx

159 pc

wc:

-l     :     列出行数

-w     :     列出多少字(英文单字)

-m     :     多少字符

例子:

[email protected]:~$ cat /etc/issue | wc

2       5      26

三列分别为行数、字数、字符数

三、双向重定向tee

tee:

-a     :     已累计的方式加入文件

例子:

[email protected]:~$ last | tee last.list | cut -d " " -f1

四、字符转换命令tr、col、join、paste、expand

tr:

-d     :     删除一段字符串

-s     :     替换掉重复的字符

例子:

替换掉小写字符,变成大写字符

[email protected]:~$ last | tr ‘[a-z]‘ ‘[A-Z]‘

删掉冒号

[email protected]:~$ last | tr -d ‘:‘

col:

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

-b     :     在文字内有反斜杠(/)时,仅保留反斜杠最后接的字符

[email protected]:~$ man col | col -b > /root/col.man

col经常被利用于将man page转存为纯文本文件以方便查阅的功能。

五、切割命令split

split:

-b     :     后面接切割成的文件大小,可加单位如b,k,m等

-l     :     以行数进行切割

[email protected]:/mnt/fuse$ split -l 4 index.php index.php

[email protected]:/mnt/fuse$ ls -al

drwxrwxrwx  3 root   root     4096 Jul  1 16:21 .

drwxr-xr-x 10 root   root     4096 Jun 18 15:40 ..

-rwxr--r--  1 nobody nogroup  1295 Jun 18 20:22 index.php

-rw-rw-r--  1 lq     lq         98 Jul  1 16:21 index.phpaa

-rw-rw-r--  1 lq     lq        161 Jul  1 16:21 index.phpab

-rw-rw-r--  1 lq     lq        211 Jul  1 16:21 index.phpac

-rw-rw-r--  1 lq     lq        200 Jul  1 16:21 index.phpad

-rw-rw-r--  1 lq     lq        280 Jul  1 16:21 index.phpae

-rw-rw-r--  1 lq     lq        213 Jul  1 16:21 index.phpaf

-rw-rw-r--  1 lq     lq        132 Jul  1 16:21 index.phpag

将上面的文件合并可用:

[email protected]:/mnt/fuse$ cat index.phpa* >> index.php.backup

六、参数代换xargs

xargs:

例子:

将/etc/passwd内的第一行取出,仅取三列,使用finger显示账号内容

[email protected]:~$ cut -d ‘:‘ -f 1 /etc/passwd | head -n 3 | xargs finger

Login: root                             Name: root

Directory: /root                        Shell: /bin/bash

Last login Thu May 29 09:29 (CST) on pts/1 from ppt-20130509oii

No mail.

No Plan.

Login: daemon                           Name: daemon

Directory: /usr/sbin                    Shell: /bin/sh

Never logged in.

No mail.

No Plan.

Login: bin                              Name: bin

Directory: /bin                         Shell: /bin/sh

Never logged in.

No mail.

No Plan.

原文:http://www.cnblogs.com/warren-liuquan/p/3818678.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值