Linux Shell基础 管道符和grep命令
概述
管道符:管道符使用"丨"代表。如"命令1丨命令2"。表示命令 1 的正确输出作为命令 2 的操作对象。命令 1 必须有正确输出,而命令 2 必须可以处理命令 1 的输出结果。
grep命令:在文件中提取和匹配符合条件的字符串行。
管道符
1. 在使用"||"命令査看/etc/ 目录时显示的内容非常多,只能看到最后的内容,而不能看到前面输出的内容,此时可以用管道符将输出的结果作为more的操作对象,让more 命令分屏显示文件内容,命令如下:
[root@localhost ~]# ll -a /etc/|more
2. 查询一下本地所有网络连接,提取包含 ESTABLISHED(已建立连接)的行,命令如下:
[root@localhost ~]# netstat -an | grep "ESTABLISHED"
3. 查询具体的网络连接数量,再使用wc命令统计行数
[root@localhost ~]# netstat -an | grep "ESTABLISHED" | wc-l
grep命令
[root@localhost ~]# grep [选项] "搜索内容" 文件名
选项:
- -A 数字:列出符合条件的行,并列出后续的 n 行;
- -B 数字:列出符合条件的行,并列出前面的 n 行;
- -c:统计找到的符合条件的字符串的次数;
- -i:忽略大小写;
- -n:输出行号;
- -v:反向査找;
- --color=auto:搜索出的关键字用颜色显示;
查找用户信息文件/etc/passwd中有多少可以登录的用户
[root@localhost ~]# grep "/bin/bash" /etc/passwd
grep 是行提取命令,所以只要一行数据中包含"搜索内容",就会列出整行的数据。在这个例子中,会在 /etc/passwd 文件中列出所有包含"/bin/bash"的行,而我们已知只有可登录用户的 Shell 才是"/bin/bash",而伪用户的 Shell 是"/sbin/nologin",所以这条命令会列出当前系统中所有可以登录的用户。
列出符合条件的行,并列出后续的 n 行
查找包含"root"的行,并列出后续的3行
[root@localhost ~]# grep -A 3 "root" /etc/passwd
列出符合条件的行,并输出行号
查找可以登录的用户,并显示行号
[root@localhost ~]# grep -n "/bin/bash" /etc/passwd
列出符合条件的行,再反向査找
查找不包含"/bin/bash"的行,其实就是列出所有的伪用户
[root@localhost ~]# grep -v "/bin/bash" /etc/passwd
grep和find命令的区别
find命令
find 命令用于在系统中搜索符合条件的文件名,如果需要模糊査询,则使用通配符进行匹配。find 命令也使用 -regex 选项通过正则表达式规则进行匹配查找,而正则表达式是模糊匹配。
grep命令
grep 命令用于在文件中搜索符合条件的字符串,如果需要模糊査询,则使用正则表达式进行匹配。搜索时字符串是包含匹配的。grep 命令和 find 命令不一样,使用 grep 命令在文件中査找符合条件的字符串时,只要搜索的内容包含在数据行中,就会列出整行内容。