管线命令(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

浙公网安备 33010602011771号