Linux文本搜索(一)之 grep、find

一、常用元字符簡介

字符 功能
\ 轉義字符
. 匹配除換行符(\n、\r)之外的任意一個字符
* 匹配前面的子表達式零次或多次
+ 匹配前面的子表達式一次或多次
? 匹配前面的子表達式零次或一次
$ 匹配結尾
[] 匹配方括號內的字符集合的任意一個
[^xyz] 匹配除xyz之外的任意字符
x|y 匹配x或者y
{n} 匹配前一個字符n次(嚴格的n次)
{n,} 匹配前一個字符至少n次
{n,m} 匹配前一個字符至少n次,最多m次

二、grep 命令介紹

  1. 主要參數介紹
-E,     相當於  egrep   支持擴展的正則表達式

基本正則表達式(BRE)中,只承認“^”、“$”、“.”、“[”、“]”、“*”這些是元字符,所有其他的字符都被識別爲普通字符。

而在擴展正則表達式(ERE)中,則在BRE的基礎上增加了“(”、“)”、“{”、“}”、“?”和“+”、“|”等元字符。

-F,      相當於  fgrep    不支持正則表達式

-B       除了顯示符合範本樣式的那一列之外,並顯示該行之前的內容。後面可跟一數字,表示顯示前幾行
-A       除了顯示符合範本樣式的那一列之外,並顯示該行之後的內容。後面可跟一數字,表示顯示後幾行
-C       除了顯示符合範本樣式的那一列之外,並顯示該行前後的內容。後面可跟一數字,表示顯示前後各幾行
-b       在顯示符合樣式的那一行之前,標示出該行第一個字符的偏移量。
-a       不要忽略二進制的數據。
-c       計算符合樣式的行數。
-v       顯示不包含匹配文本的所有行(小寫v   大寫的V是顯示版本信息)
-n       顯示行號
-w       顯示嚴格全字符符合的行
-o       只顯示符合PATTERN的部分
-L       列出文件內容不符合指定的樣式的文件名稱(-l 與之相反)
-r       遞歸的方式匹配目錄下的所有文件
-H      在顯示符合樣式的那一行之前,表示該行所屬的文件名稱。(-h 與之相反)
-i        忽略字符大小寫
  1. 例子
[hadoop@bigdata data]$ grep pa jike.txt 
#Root password
passsss
passsssinon
pa

[hadoop@bigdata data]$ grep -w pa jike.txt 
pa

[hadoop@bigdata data]$ grep -o pa jike.txt 
pa
pa
pa
pa

# 匹配以#開頭的行
[hadoop@bigdata data]$ grep ^# jike.txt 
#Root password

[hadoop@bigdata data]$ grep passsssi* -C 1 -n jike.txt 
1-#Root password
2:passsss
3:passsssinon
4-pa

[hadoop@bigdata data]$ grep passsssi* -n jike.txt 
2:passsss
3:passsssinon

[hadoop@bigdata ~]$ grep p -r -H -n -b data/
data/wc.data:3:28:beijing,is,the,capital,of,china
data/hello.txt:4:28:4,jepson
data/spooling_data/wc.data.COMPLETED:3:28:beijing,is,the,capital,of,china
data/spooling_data/hello.txt.COMPLETED:4:28:4,jepson
data/position/taildir_position.json:1:0:[{"inode":182330329,"pos":114,"file":"/home/hadoop/data/taildir/test1/example.log"},{"inode":184597617,"pos":0,"file":"/home/hadoop/data/taildir/test2/b.log"},{"inode":184597614,"pos":20,"file":"/home/hadoop/data/taildir/test2/a.log"}]
data/jike.txt:1:0:#Root password
data/jike.txt:2:15:passsss
data/jike.txt:3:23:passsssinon
data/jike.txt:4:35:pa

三、find命令

在指定目錄中查找指定文件

  1. 語法
find path 查找條件
  1. 常用參數
-name name,文件名符合name的文件(-iname 忽略大小寫)
-regex PATTERN  使用正則表達式來匹配
-type 指定查找的文件類型   
		f  文件
		d  目錄
		l   符號鏈接
-empty   檢索空文件
!       反義(不符合條件的)
-user   檢查文件所屬用戶
-group    檢查文件所屬用戶組


# 天
-mtime   內容修改
-atime    訪問過
-ctime     修改過

# 分鐘
-mmin
-amin
-cmin
			後跟一個負數 表示 幾天/分鐘以內  eg:-atime -2  兩天以內訪問過   -atime 2  兩天前訪問過
			後跟一個正數,表示幾天/分鐘以前
-size  根據文件大小進行搜索
	c 字節
	k kB
	M MB
	G GB
	eg:find . -size +13M   大於13MB    負號表示小於
-perm    通過權限進行搜索   -perm 664   /  -perm u=rw,g=rw,o=r
-exec    對搜索結果執行命令,無提示   find .-type d -exec ls -l {} \;
-ok        對搜索結果執行命令,有提示(交互式,需要確認)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章