shell--管道命令(pipe)

Posted 微雷之末

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell--管道命令(pipe)相关的知识,希望对你有一定的参考价值。

管道命令使用的是|”这个界定符号

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

每个管道后面接的第一个数据必定是“命令”,而且这个命令必须要能够接受 standrad input的数据才行,这样的命令才可以是“管道命令”。例如 less,more,head,tail等都可以接受standard input的管道命令。至于ls,cp,mv等就不是管道命令了

也就是说管道命令主要有两个比较需要注意的地方:

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

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

 

选取命令:cut,grep

选取命令就是将一段数据经过分析后,取出我们所想要的,或者是经由分析关键字,取得我们所想要的那一行。需要注意,一般来说,选取信息通常是针对“行”来分析的,并不是整片信息分析

cut

cut -d ’分割字符’ -f fields    用于分割字符

cut -c 字符范围  用于排列整齐的信息

参数:

-d:后面接分割字符,与-f一起使用

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

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

例如

[email protected]:/mnt/c/Users/vivi# echo $PATH

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

 

[email protected]:/mnt/c/Users/vivi# echo $PATH |cut -d ‘:‘ -f 5

/sbin

 

[email protected]:/mnt/c/Users/vivi# echo $PATH |cut -d ‘:‘ -f 3,5

/usr/sbin:/sbin

 

[email protected]:/mnt/c/Users/vivi# export

declare -x HOME="/root"

declare -x HOSTTYPE="x86_64"

declare -x LANG="en_US.UTF-8"

declare -x LESSCLOSE="/usr/bin/lesspipe %s %s"

declare -x LESSOPEN="| /usr/bin/lesspipe %s"

declare -x LOGNAME="root"

 

[email protected]:/mnt/c/Users/vivi# export|cut -c 12-

HOME="/root"

HOSTTYPE="x86_64"

LANG="en_US.UTF-8"

LESSCLOSE="/usr/bin/lesspipe %s %s"

LESSOPEN="| /usr/bin/lesspipe %s"

LOGNAME="root"

 

grep

cut是在一行信息当中取出某部分我们想要的,而grep则是分析一行信息,若当中有我们所需要的信息,就将该行拿出来,语法是这样的

grep [-acinv] [--color-auto] ‘查找字符串’ filename

-a:binary文件以text文件的方式查找数据

-c:计算找到‘查找字符串’的次数

-i:忽略大小写的不同,所以大小写视为相同

-n:顺便输出行号

-v:反向选择,即显示出没有‘查找字符串’内容的那一行

--color=auto:可以将找到的关键字部分加上颜色显示

[email protected]:/mnt/c/Users/vivi# last| grep ‘root‘

[email protected]:/mnt/c/Users/vivi# last| grep -v ‘root‘

[email protected]:/mnt/c/Users/vivi# grep --color=auto ‘stop‘ catfile

ok now stop

以上是关于shell--管道命令(pipe)的主要内容,如果未能解决你的问题,请参考以下文章

php 如何利用管道(pipe)与shell互交

Linux管道命令(pipe)

24 shell 管道命令与过滤器

shell 管道命令与过滤器

shell——mkfifo管道

在shell中用管道连接n个命令?