grep ,全稱Global Regular Expression Print(示全局正則表達式打印)。
grep 可以配合正則表達式來實現全文搜索,是linux 比較好用的文本處理工具。
grep 系列有三個:
- grep : 支持基本正則表達式
- egrep : 支持拓展正則表達式,相當於grep -E
- fgrep : 不支持正則表達式,只能匹配寫死的字符串,但是很快(fast grep)
grep 的常用命令:
參數 | 解釋 |
---|---|
-i | 在搜索的時候忽略大小寫 |
–color | 匹配高亮顯示 |
-n | 顯示匹配所在的行號 |
-w | 匹配整個單詞 |
-v | 輸出不帶關鍵字的行,反向匹配 |
-Ax | 輸出包含匹配結果的後x 行,A : after |
-Bx | 輸出包含匹配結果的前x 行,B : Before |
-Cx | 輸出包含匹配結果的前後x 行,C : context |
-c | 輸出匹配到的行數(ps: 不是次數) |
-o | 只顯示匹配到的字符串,不顯示整行,每個字符串單獨展示 |
示例:
先找一個常見的服務日誌文件abs-biz.log.2019.12.08.20,我想看看有沒有報錯
- 匹配字符串
[root@iZ2zehgy4d4j4b9gsubksiZ liuxueService]# grep "ERROR" abs-biz.log.2019.12.08.20
[2019-12-08 20:48:16.703][abs][ERROR][druid.sql.Statement.statementLogError:149][495efa23fef6fb880][] - {conn-10013, pstmt-22738} execute error. insert into attention (`school_name`, `profession`, `score`)
[2019-12-08 20:48:16.835][abs][ERROR][c.c.c.web.resolver.ApiExceptionResolver.logError:128][495efa23fef6fb880][] - Resolving exception:
[2019-12-08 20:48:58.163][abs][ERROR][druid.sql.Statement.statementLogError:149][4a71a26bb12d20660][] - {conn-10013, pstmt-22768} execute error. insert into attention (`school_name`, `profession`, `score`)
[2019-12-08 20:48:58.167][abs][ERROR][c.c.c.web.resolver.ApiExceptionResolver.logError:128][4a71a26bb12d20660][] - Resolving exception:
- 找出"ERROR" 的日誌,忽略大小寫
[root@iZ2zehgy4d4j4b9gsubksiZ liuxueService]# grep -i "ERROR" abs-biz.log.2019.12.08.20
[2019-12-08 20:47:29.869][abs][INFO][c.c.a.i.TokenValidateInterceptor.preHandle:79][99145c82ad73bc349][MRvVsXDof312kHA-t8ApjA890sNe0rWiazjP0u7ES_8] - 獲取token失敗, error=[20002]登錄過期
[2019-12-08 20:47:29.988][abs][INFO][c.c.a.i.TokenValidateInterceptor.preHandle:79][08f9b1d10838b6331][MRvVsXDof312kHA-t8ApjA890sNe0rWiazjP0u7ES_8] - 獲取token失敗, error=[20002]登錄過期
[2019-12-08 20:47:29.988][abs][INFO][c.c.a.i.TokenValidateInterceptor.preHandle:79][2bc1cda1bc2d00143][MRvVsXDof312kHA-t8ApjA890sNe0rWiazjP0u7ES_8] - 獲取token失敗, error=[20002]登錄過期
[2019-12-08 20:47:30.019][abs][INFO][c.c.a.i.TokenValidateInterceptor.preHandle:79][7ab2cba9e3e811c9b][MRvVsXDof312kHA-t8ApjA890sNe0rWiazjP0u7ES_8] - 獲取token失敗, error=[20002]登錄過期
[2019-12-08 20:48:16.703][abs][ERROR][druid.sql.Statement.statementLogError:149][495efa23fef6fb880][] - {conn-10013, pstmt-22738} execute error. insert into attention (`school_name`, `profession`, `score`)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
[2019-12-08 20:48:16.835][abs][ERROR][c.c.c.web.resolver.ApiExceptionResolver.logError:128][495efa23fef6fb880][] - Resolving exception:
### Error updating database. Cause: java.sql.SQLException: Field 'user_id' doesn't have a default value
### The error may involve com.canyun.abs.dao.liuxue.AttentionDao.save-Inline
### The error occurred while setting parameters
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:246)
[2019-12-08 20:48:58.163][abs][ERROR][druid.sql.Statement.statementLogError:149][4a71a26bb12d20660][] - {conn-10013, pstmt-22768} execute error. insert into attention (`school_name`, `profession`, `score`)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
[2019-12-08 20:48:58.167][abs][ERROR][c.c.c.web.resolver.ApiExceptionResolver.logError:128][4a71a26bb12d20660][] - Resolving exception:
### Error updating database. Cause: java.sql.SQLException: Field 'user_id' doesn't have a default value
### The error may involve com.canyun.abs.dao.liuxue.AttentionDao.save-Inline
### The error occurred while setting parameters
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:246)
- 找到"ERROR" 日誌,並輸出後10 行
[root@iZ2zehgy4d4j4b9gsubksiZ liuxueService]# grep -A10 "ERROR" abs-biz.log.2019.12.08.20
[2019-12-08 20:48:58.167][abs][ERROR][c.c.c.web.resolver.ApiExceptionResolver.logError:128][4a71a26bb12d20660][] - Resolving exception:
java.lang.Exception:
### Error updating database. Cause: java.sql.SQLException: Field 'user_id' doesn't have a default value
### The error may involve com.canyun.abs.dao.liuxue.AttentionDao.save-Inline
### The error occurred while setting parameters
### SQL: INSERT INTO attention ( `school_name`, `profession`, `score` ) values( ?, ?, ? )
### Cause: java.sql.SQLException: Field 'user_id' doesn't have a default value
; Field 'user_id' doesn't have a default value; nested exception is java.sql.SQLException: Field 'user_id' doesn't have a default value
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:246)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:73)
...