grep是我們最常用的命令之一,但是正真用的熟的不多,把基礎命令記牢固,能幫我們節約很多時間
grep的option
-A 1 表示找到所有匹配行,並顯示所有匹配行后的一行
在錯誤日志查找時還是很有用
-B 1 表示找到所有匹配行,並顯示所有匹配行的前面一行
-C 1表示找到所有匹配行,並顯示所有匹配行的前一行,后一行
-a 表示把所有文件當作ASCII文件來處理 搜索二進制文件
//a.pcap是一個tcpdump生成的文件,為binary文件,使用grep不能搜索
-b 表示顯示match的字符串在文件中的offset
-c 顯示有多少行match
–color 是把match的字符用不同顏色標示出來
-e 后面跟一個正則表達式,指定多個正則表達式的時候很有用
-f可以指定pattern在我們的文件中 pattern文件中的每一行都會來進行匹配
-m 最多匹配幾個后,就停止,這樣速度會比較快
-n 匹配之后,在前面打印行號,這個還是有用的
-o 只打印匹配的內容
-R 搜索子目錄
$ll
total 208
-rw-r–r– 1 * * 91868 5 1 23:05 a.pcap
-rw-r–r– 1 * * 31 5 2 22:39 a.txt
-rw-r–r– 1 * * 4 5 1 23:18 b.txt
drwxr-xr-x 3 * * 102 5 4 18:58 dir1 //這是一個目錄
-rw-r–r– 1 * * 4 5 4 18:49 pattern.txt
//只能搜索當前目錄
-v invert查找 下面為在a.txt中,查找不包含”a”的行 這個命令會經常使用
-w 查找一個詞,
grep 正則表達式
^pattern 表示開頭處開始匹配
. 為匹配任意單個字符
“r.*h”
//匹配一個字符串,其中有r,有h,且r在前,h在后,且r和h之間可以間隔任意長度的任意字符串,sat考試培訓當然也可以沒有間隔
//匹配一個字符串,其中r是第一個字符,h是最后一個字符,且r和h之間可以間隔任意長度的任意字符串,當然也可以沒有間隔
匹配指定范圍內的任意字符 [e] 匹配任意單個字符
$ echo “redh” |grep “[e]”
redh
$ echo “redh” |grep “[s]”
匹配指定范圍內的任意字符 [eh] 匹配e或h
匹配指定范圍內的任意字符 [a-z],[1-3a-b] [1-3a-bX-Z]
//[^] 匹配指定范圍外的字符
[[:space:]] 匹配空白字符
\? 表示匹配前面的字符串0次或1次
{m,n} 匹配前面的字符串m到n次
{2,} 匹配前面的字符串至少兩次
// \
//() 用來進行分組, 下面這個就是匹配帶有re和rea的
+ 表示匹配前面的字符串一次或多次
| 表示或的關系