管线命令(Pipe)

管线命令接受|前面传来的stdout,管线示意图如下所示:

 管线两个需要注意的地方:

1.管线仅会处理stdout,忽略对stderr的处理

2.管线必须接受前个指令的stdin才是

那么,如果我想接受stderr的数据该怎么处理呢:

可以用数据流的重新导向功能把stderr重新导向为stdout,用2>&1可以把stderr变成stdout导出

攫取命令cut,grep

cut

把一行中需要的信息取出来

cut -d'分隔字符' -f fields
cut -c 字符区间
-d 根据后面的分隔字符切分 fields,与-f一起用
-f 分隔符切分之后,分为几段,f代表取第几段的意思
-c 以字符为单位取出字符

例:可以取得分割后的字段

例:在整齐排泄的字符总,可以取得一个区间

查看登录的用户名

grep

如果行内含我们需要的信息,就把这行拿出来

grep -acinv --color=auto str filename
-a 将binary文件以text文件查字符串
-c 计算找出的字符串的次数
-i 忽略大小写
-n 输出行号
-v 反向选择,选择没有str那一行
--color=auto 找出的关键字加颜色

例:查字符串行

反向选择

配合使用

高亮

grep进阶选项

grep -A -B --color=auto '要搜寻的字符串' filename

[shichaogeng@study ~]$ grep -n -A3 -B2 MANPATH /etc/man_db.conf

利用[]搜寻集合字符

搜寻test和taste两个单字,[]来匹配一个字符

查询带oo不带g字符

解释下第19行,因为oo前面可能是o,所以认定oo前面不带g

oo前面不带小写字母

也可以这么写

查询带数字的

也可以这么写

利用行首和行尾字符^$

^来代表以什么开头

 

也可以这么写

查找非英文开头的

由以上例子可知,^放在[]之内和之外是不同的,放在里面代表非,放在外面代表行首

查找结尾是.的行

分析

可知,^M$为windows换行符,$为linux换行符,这样就可以理解^$的意义了

怎么找出空白行呢。。。机智的我看了答案就知道了,查以$为开头的当然就是空白行了

查询并打印出文件中非#的批注和空白行的内容

任意一个字符.与重复字符*

小数点.    代表一定有一个任意字符
*    代表重复前一个字符,0到无穷次
找出g??d字符的行

带0个或者多个o的字符

 

至少两个o以上字符串

开头结尾都是g,中间至少一个o

查询gg中间任意字符的字符串

任意数字字符串

限定连续字符范围

查找gg中间0-5个o的字符串

上条两个以上的oo呢

 

 

 

 

 

 

 

 

排序命令 sort wc uniq

 

posted @ 2017-05-28 15:54  叶落之秋  阅读(654)  评论(0编辑  收藏  举报