Linux 常用命令——grep

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,我想看看有沒有報錯

abs-biz.log.2019.12.08.20

  1. 匹配字符串
[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:
  1. 找出"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)
  1. 找到"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)
...	
	
發佈了23 篇原創文章 · 獲贊 27 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章