1. 程式人生 > >0612 grep查詢關鍵字所在行以及其上下幾行

0612 grep查詢關鍵字所在行以及其上下幾行

百度到的資訊

百度一下,各種部落格,都是這麼寫:

linux系統中,利用grep列印匹配的上下幾行

如果在只是想匹配模式的上下幾行,grep可以實現。

$grep -5 ‘parttern’ inputfile //列印匹配行的前後5行

$grep -C 5 ‘parttern’ inputfile //列印匹配行的前後5行

$grep -A 5 ‘parttern’ inputfile //列印匹配行的後5行

$grep -B 5 ‘parttern’ inputfile //列印匹配行的前5行

可是我測試的時候,發現不行:

[liweizhi@bogon /]$ grep -C5 '異常:java.lang.NullPointerException'
/home/tomcat/LogsYunnanEtcApiService [liweizhi@bogon /]$ grep -5 '異常:java.lang.NullPointerException' /home/tomcat/LogsYunnanEtcApiService [liweizhi@bogon /]$ grep -B 5 '異常:java.lang.NullPointerException' /home/tomcat/LogsYunnanEtcApiService [liweizhi@bogon /]$ grep -5 '異常:java.lang.NullPointerException' /home/tomcat/LogsYunnanEtcApiService
[liweizhi@bogon /]$ grep -B 5 '異常:java.lang.NullPointerException' /home/tomcat/LogsYunnanEtcApiService [liweizhi@bogon /]$ grep -C 5 '異常:java.lang.NullPointerException' /home/tomcat/LogsYunnanEtcApiService

-r可以顯示關鍵字所在行

-r是可以的,但是隻能顯示符合的那一行:

[[email protected] /]$ grep -r '異常:java.lang.NullPointerException' /home/tomcat/LogsYunnanEtcApiService
/home/tomcat/LogsYunnanEtcApiService/logbackOutFile.log:*****
***【儀電9001卡操作】====****====異常:java.lang.NullPointerException] /home/tomcat/LogsYunnanEtcApiService/logbackOutFile.log:********【儀電9001卡操作】====****====異常:java.lang.NullPointerException] /home/tomcat/LogsYunnanEtcApiService/logbackOutFile.log:********【儀電9001卡操作】====****====異常:java.lang.NullPointerException] /home/tomcat/LogsYunnanEtcApiService/logbackOutFile.log:********【儀電9001卡操作】====****====異常:java.lang.NullPointerException] /home/tomcat/LogsYunnanEtcApiService/logbackOutFile.log:********【儀電9001卡操作】====****====異常:java.lang.NullPointerException] /home/tomcat/LogsYunnanEtcApiService/logbackOutFile.log:********【儀電9001卡操作】====****====異常:java.lang.NullPointerException] /home/tomcat/LogsYunnanEtcApiService/logbackOutFile.log:********【儀電9001卡操作】====****====異常:java.lang.NullPointerException] /home/tomcat/LogsYunnanEtcApiService/logbackOutFile.2018-06-11.0.log:********【儀電9001卡操作】====****====異常:java.lang.NullPointerException] /home/tomcat/LogsYunnanEtcApiService/logbackOutFile.2018-06-11.0.log:********【儀電9001卡操作】====****====異常:java.lang.NullPointerException] /home/tomcat/LogsYunnanEtcApiService/logbackOutFile.2018-06-11.0.log:********【儀電9001卡操作】====****====異常:java.lang.NullPointerException] /home/tomcat/LogsYunnanEtcApiService/logbackOutFile.2018-06-11.0.log:********【儀電9001卡操作】====****====異常:java.lang.NullPointerException] /home/tomcat/LogsYunnanEtcApiService/logbackOutFile.2018-06-11.0.log:********【儀電9001卡操作】====****====異常:java.lang.NullPointerException] /home/tomcat/LogsYunnanEtcApiService/logbackOutFile.2018-06-11.0.log:********【儀電9001卡操作】====****====異常:java.lang.NullPointerException] /home/tomcat/LogsYunnanEtcApiService/logbackOutFile.2018-06-11.0.log:********【儀電9001卡操作】====****====異常:java.lang.NullPointerException]

-r-B組合使用才可以

後來靈機一動,是不是-r是必備的,然後再加上-B 5這樣呢?

試了一下,果然是這樣:

[liweizhi@bogon /]$ grep -r -B 1 '異常:java.lang.NullPointerException' /home/tomcat/LogsYunnanEtcApiService

/home/tomcat/LogsYunnanEtcApiService/logbackOutFile.log-********【儀電9001卡操作】入參:com.uroad.etc.dto.StoreInput@2deac554[useruuid=d86a732d-2da6-11e8-add8-70106fadxxxx,orderNo=20180611000000xxxx,operationSequence=0101,instructions=803A010800A400000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,reportResults=<null>,useruuid=<null>,source=1]
/home/tomcat/LogsYunnanEtcApiService/logbackOutFile.log:********【儀電9001卡操作】====****====異常:java.lang.NullPointerException]
--
/home/tomcat/LogsYunnanEtcApiService/logbackOutFile.log-********【儀電9001卡操作】入參:com.uroad.etc.dto.StoreInput@2fbe1a1[useruuid=d86a732d-2da6-11e8-add8-70106fadxxxx,orderNo=20180611000000xxxx,operationSequence=0101,instructions=803A010800A400000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,reportResults=<null>,useruuid=<null>,source=1]
/home/tomcat/LogsYunnanEtcApiService/logbackOutFile.log:********【儀電9001卡操作】====****====異常:java.lang.NullPointerException]
--
/home/tomcat/LogsYunnanEtcApiService/logbackOutFile.log-********【儀電9001卡操作】入參:com.uroad.etc.dto.StoreInput@4364a874[useruuid=d86a732d-2da6-11e8-add8-70106fadxxxx,orderNo=20180611000000xxxx,operationSequence=0101,instructions=803A010800A400000xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,reportResults=<null>,useruuid=<null>,source=1]
/home/tomcat/LogsYunnanEtcApiService/logbackOutFile.log:********【儀電9001卡操作】====****====異常:java.lang.NullPointerException]
--

總結

實踐出真理啊!!!

之所以學這個操作,是為了日後在命令列直接檢視日誌,通過grep加關鍵字可以直接提取出符合條件的日誌記錄,而且使用grep命令可以同時對多個日誌檔案進行搜尋。如果使用notepadd++工具檢視,則只能對一個檔案進行檢視,而且無法直接過濾出符合條件的日誌記錄。

相關推薦

0612 grep查詢關鍵字在行及其上下

百度到的資訊 百度一下,各種部落格,都是這麼寫: linux系統中,利用grep列印匹配的上下幾行 如果在只是想匹配模式的上下幾行,grep可以實現。 $grep -5 ‘parttern’ inputfile //列印匹配行的前後5行 $grep -

利用grep參數查看某關鍵詞前後內容

RR font account -a stderr 所在 std ntc span 查看文件中含有“哈哈哈”關鍵字所在行後5行內容 cat xxxxxx | grep -A 5 哈哈哈 查看文件中含有“哈哈哈”關鍵字所在行前5行內容 cat xxxxxx | grep

Linux grep 命令檢視符合條件文字的相近

查日誌時,grep 到自己想要的行之後,還想看下符合條件的附近日誌記錄 man grep 發現果然已經有這個引數 Context Line Control -A NUM, --after-context=NUM Print NUM l

PHP隔換色輸出列表格。

<?php$table = '';function PrintTable($rows, $cols){ global $table; $table .= "<table width='700' border='1'>"; for ($i=1;$i<$r

資料庫SQL實踐7:查詢薪水漲幅超過15次的員工號emp_no及其對應的漲幅次數t

思想: 題目要求查詢薪水漲幅超過15次的員工號emp_no以及其對應的漲幅次數t。首先通過group by函式對emp_no進行分組,將同一個emp_no的記錄分為一組並通過count(*)計算這個emp_no組中一共有幾條記錄,最後通過having函式找出記錄數大於15的。 知識點:

資料庫SQL實戰3:查詢各個部門當前領導當前薪水詳情及其對應部門編號dept_no

思想: 題目要求查詢各個部門當前領導當前薪水詳情以及其對應部門編號dept_no。首先根據當前領導通過條件d.to_date = '9999-01-01'進行篩選,然後當前薪水通過條件s.to_date = '9999-01-01'進行再次篩選,最後根據領導的編號通過條件d.emp_no = s

二分查詢及其有趣的使用

說到二分查詢可能大家會想到二分查詢的基本模板類似這樣的: /** * 二分查詢的基本實現 * 作用:對於一個已經從小到大排好序的陣列找出目標元素的索引值 * 時間複雜度為O(logn) * @param nums * @param targ

牛客:資料庫實戰—2—查詢各個部門當前(to_date='9999-01-01')領導當前薪水詳情及其對應部門編號dept_no

CREATE TABLE `dept_manager` ( `dept_no` char(4) NOT NULL, `emp_no` int(11) NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL, PRIMARY KEY (

資料庫SQL實戰 --3.查詢各個部門當前領導當前薪水詳情及其對應部門編號

題目描述 查詢各個部門當前(to_date=‘9999-01-01’)領導當前薪水詳情以及其對應部門編號dept_no CREATE TABLE `dept_manager` ( `dept_no` char(4) NOT NULL, `emp_no` int(

查詢各個部門當前(to_date='9999-01-01')領導當前薪水詳情及其對應部門編號dept_no之SQL實現

題目描述 查詢各個部門當前(to_date='9999-01-01')領導當前薪水詳情以及其對應部門編號dept_no CREATE TABLE `dept_manager` ( `dept_no` char(4) NOT NULL, `emp_no` int(11) NOT NUL

使用grep查詢指定目錄下的關鍵字

之前於童鞋問我如下問題: 在/etc目錄下如何查詢包含’root’關鍵字的所有檔案? 對於一個指定的檔案來說通常使用下面的方法來查詢關鍵字: 1 grep 'keyword' file 如果你懂得正則表示式,那麼還可以對關鍵字作更細緻的匹配。但是利用g

刷題-----【資料庫SQL實戰】查詢的員工號emp_n薪水漲幅超過15次o及其對應的漲幅次數t(親測正確的)

題目描述 查詢薪水漲幅超過15次的員工號emp_no以及其對應的漲幅次數t CREATE TABLE `salaries` ( `emp_no` int(11) NOT NULL, `salary` int(11) NOT NULL, `from_date` date NO

linux 用 grep 查詢單個或多個字串(關鍵字

1、單個字串進行查詢:1、查詢當前目錄檔名中的字串:    grep  字串  檔名2、查詢某個檔案中字串,並輸出行號:grep -n 字串 檔名3、查詢當前目錄(包含子目錄)的字串:grep -r 字串 *4、查詢當前目錄(包含子目錄)的字串,並輸出行號:grep -rn

Linux下grep查詢包含某個關鍵字的上下文資訊

Linux下grep顯示多行資訊 標準unix/linux下的grep通過以下引數控制上下文 grep -C 5 foo file  顯示file檔案中匹配foo字串那行以及上下5行 grep -B 5 foo file  顯示foo及前5行 grep -A 5

查詢關鍵字(輸出檔名和關鍵字在行號)

#!/bin/sh FILENAMES= for i in `find /home/` do file $i | grep "text" if [ "$?" == "0" ];then { echo $i

【資料庫SQL實戰】查詢薪水漲幅超過15次的員工號emp_no及其對應的漲幅次數t

題目描述 查詢薪水漲幅超過15次的員工號emp_no以及其對應的漲幅次數t CREATE TABLE `salaries` ( `emp_no` int(11) NOT NULL, `salary

有一個3*4的矩陣,要求程式設計求出其中值最大的那個元素的值,及其在行號列號

#include <stdio.h> #include <conio.h> int main(){   int a[3][4]={1,2,3,4,5,6,7,8,23,48,11,12};   int i,j,max=a[0][0],row,colu

【pom.xml 依賴】使用net.sf.json-lib-2.4-jdk15.jar需要的其他依賴架包 及其一直在pom.xml報錯的問題

本博文著重講一下,關於net.sf.json-lib-2.4-jdk15.jar包依賴一直報錯的問題:首先json-lib-2.4-jdk15.jar僅它本身不夠,必須如下的幾個依賴架包都有才能使用!!!小編將json-lib-2.4-jdk15.jar以及其相關的依賴架包的

【shell】ps 結合grep查詢時,去掉grep自身匹配的那

想用ps命令判斷當前的程序是否還在,為了防止誤判,還有去掉grep程序查詢的那行。 例如, !/bin/sh STATUS=`ps |grep "transmission-daemon"|grep -v "grep"` if [ ! -z "$STATUS" ];then

grep -A -B -C 顯示抓取的前後參數

參數 tween line 字串 抓取 his 站點 顯示 ces 我經常用grep找東西,比如用戶名和密碼。大部分站點和用戶名和密碼都是在一樣的,方便grep查找。有時,為了文本好看,我會放在多行。比如 wikipedia多個語言版本上有多個賬號,就放在wikipedia