首页 > 代码库 > 管道,输出,管道,重定向,grep
管道,输出,管道,重定向,grep
输出:
大于号:将一条命令执行结果(标准输出,或者错误输出,本来都要打印到屏幕上面的)重定向其它输出设备(文件,打开文件操作符,或打印机等等)
> 是覆盖原有内容
>> 是追加内容
2> 是错误内容覆盖
>> 是错误内容追加重定向
[yuq@localhost ~]$ sdfsdfsdf > a.txt
bash: sdfsdfsdf: 未找到命令...
[yuq@localhost ~]$ sdfsdfsdf 2>a.txt
[yuq@localhost ~]$ echo ‘123‘ > ture.txt
&> 是错误(正确)都可以内容覆盖
&>> 是错误(正确)都可以内容追加重定向
正确与错误的内容分别添加到不同文件
[yuq@localhost ~]$ date 2>err.txt >ture.txt
[yuq@localhost ~]$ cat err.txt
[yuq@localhost ~]$ cat ture.txt
2017年 06月 12日 星期一 15:48:13 CST
输入:
小于号:命令默认从键盘获得的输入,改成从文件,或者其它打开文件以及设备输入
[yuq@localhost ~]$ cat err.txt
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[yuq@localhost ~]$ tr ‘a-z‘ ‘A-Z‘ <err.txt #把err.txt的内容输入转换为大写
127.0.0.1 LOCALHOST LOCALHOST.LOCALDOMAIN LOCALHOST4 LOCALHOST4.LOCALDOMAIN4
::1 LOCALHOST LOCALHOST.LOCALDOMAIN LOCALHOST6 LOCALHOST6.LOCALDOMAIN6
[yuq@localhost ~]$
grep:
#在passwd中含有passwd的行全部过滤出来
[yuq@localhost ~]$ cp /etc/passwd .
[yuq@localhost ~]$ grep root passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[yuq@localhost ~]$ grep -n root passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
[yuq@localhost ~]$ grep ^root passwd
root:x:0:0:root:/root:/bin/bash
#在passwd中含有yuq的行全部过滤出来
[yuq@localhost ~]$ grep yuq passwd
yuq:x:1000:1000:yuq:/home/yuq:/bin/bash
#在passwd中含有yuq(包括大小写)的行全部过滤出来
[yuq@localhost ~]$ grep -i yuq passwd
yuq:x:1000:1000:yuq:/home/yuq:/bin/bash
Yuq:x:1000:
#在passwd中含有yuq(包括大小写)的行全部反向过滤出来
[yuq@localhost ~]$ grep -inv yuq passwd
#找到关键字的下面三行
[yuq@localhost ~]$ grep -n -A3 root passwd
#找到关键字的上面三行
[yuq@localhost ~]$ grep -n -B3 yuq passwd
#找到关键字的上面三行和下面三行
grep -n -C3 yuq passwd
grep还可用正则表达式
管道:
把前一条命令的结果当成一个命令输入
[yuq@localhost ~]$ ls -a |grep *.txt
a.txt
结合本例就是先显示所有的文件,然后再用grep命令在ls的结果中查找包含*.txt的文件。
先把一个命令结果写入一个文件,再从文件中过滤
[yuq@localhost ~]$ ifconfig lo > a.txt
[yuq@localhost ~]$ grep ‘inet ‘ a.txt
inet 127.0.0.1 netmask 255.0.0.0
#用管道实现
[yuq@localhost ~]$ ifconfig lo | grep -n ‘inet ‘
2: inet 127.0.0.1 netmask 255.0.0.0
# tee把前面命令的结果写入a.txt(覆盖)
ifconfig lo | tee a.txt |grep ‘inet‘
# 查看/etc/passwrod的11~15行
[yuq@localhost ~]$ head -14 /etc/passwd | tail -5
[yuq@localhost ~]$ cat -n /etc/passwd |head -15|tail -5
管道,输出,管道,重定向,grep