Linux/Linux 下如何检索文件内容
管道操作符:|
可以将指令连接起来,前一个指令的输出作为后一个指令的输入 find ~ | grep "test"
的作用是在当前目录以及子目录中查找文件名包含 test
的文件以及文件夹,与 find ~ -name "test"
作用相同。

使用管道符注意的要点: - 只能处理前一个命令的正确输出,不能处理错误输出(在)

- 右边命令必须能够处理标准输入流,否则数据在传递过程中会被抛弃(在下图中,echo 指令不能接收输入,因此不能用于管道符之后)

- 可以用在管道符后面接收标准输入的命令有:sed、awk、grep、cur、head、top、less、more、wc、join、sort、split。 # grep grep 全称是 Global Regular Expression Print
grep 可以在文件里查询对应字符串所出现的行,第一个参数表示要查找的内容(需要用引号括起来),第二个参数表示文件名(在哪个文件查找),其中文件名默认支持正则表达式。
在上图的 nginx 的access.log
日志中,想要筛选出使用Windows
系统的行,可以使用grep "Windows" access.log
。可以通过 -o 选项 选出符合正则表达式的内容。如果想在 nginx 的 access.log 日志里面选出所有的访问时间,如下图。
那么可以使用grep -o "\[[a-zA-Z0-9/:+ ]*\]" access.log
,其中[]
在正则表达式中需要使用\[\]
转义,[a-zA-Z0-9/:+ ]*
表示大小写字母和/:+
字符出现 0 次或者多次。使用 -v 选项过滤包含相关字符串的内容 在使用
ps -ef | grep "nginx"
查看特定进程的时候,由于ps -ef | grep "nginx"
本身也会被认为是一个进程列出来。因此可以再使用管道符和 grep -v 过滤掉本次命令。
ps -ef | grep "nginx" | grep -v "grep"