三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

grep用法

grep用法

1、grep

Global Regular Expression Print Shell 中用于按字符串/正则表达式筛选文本行,可直接读文件,也可接收管道标准输入,是日志排查、配置过滤最常用命令。

2、基础格式

grep [选项] '匹配规则' 文件名检索文件

3、选项

-i 忽略大小写

-n 输出行号

-v 反向匹配,输出不满足条件的行

-c 只统计匹配行数

-o 只打印匹配到的字符,不打印整行

-r 递归遍历目录所有文件搜索

-w 完整单词精确匹配,不匹配子串

-A n 匹配行后追加n行

-B n 匹配行前追加n行

-C n 前后各显示n行

4、示例

(1)基础文件搜索

grep -in 'error' app.log

(2)反向过滤

grep -v '^#' /etc/profile | grep -v '^$'

(3)管道搭配系统命令(日常最多)

ps -ef | grep java | grep -v grep查找java进程,排除grep自身进程

ss -lntp | grep 80查看80端口占用

ip addr | grep inet查看网卡IP地址

(4) 递归全局查找文件内容

grep -rn 'mysql' /etc在/etc下递归搜索mysql,显示文件+行号

(5)正则表达式用法

grep '^http' url.txt ^ 开头:匹配以http开头行

grep 'jpg$' list.txt $ 结尾:匹配以jpg结尾行

grep '[0-9]' test.txt 匹配数字

(6)上下文查看日志

grep -C 3 'Exception' app.log 找到exception行,前后各打印3行

5、使用注意事项

(1)正则符号、特殊字符用单引号 ' ^abc$ ',不会被Shell解析;需要解析变量用双引号 "$LOG_KEY"

(2)-r 递归不追踪软链接 ; -R 递归跟随软链接,可能循环死链

(3)永久高亮 echo "alias grep='grep --color=auto'" >> ~/.bashrc

source ~/.bashrc

← 返回列表