그렙 (글로벌 검색 정규 표현식 (RE) 및 라인, 포괄적 인 검색 정규 표현식을 인쇄하여 선을 인쇄)는 강력한 텍스트 검색 도구, 당신은 정규 표현식 검색 텍스트를 사용하고, 일치하는 라인을 인쇄 할 수있다 아웃.
가족은 유닉스 그렙 그렙, egrep을하고 fgrep이 포함되어 있습니다. 매우 작은 차이 egrep을하고 주 : fgrep grep 명령. 그렙 egrep을 더 재 메타 문자를 지원하도록 확장되어, fgrep은 고정 그렙 또는 고속 그렙은, 그들은 단어로 모든 문자를 넣어, 즉, 자신의 문자 적 의미에 다시 정규 표현식 메타 문자 표현 그것은 더 이상 특별하지 않습니다. 리눅스는 GREP의 GNU 버전을 사용. 그것은 더 강력하고 -G, -E, -F 명령 줄 옵션에서 사용할 수있는 egrep을 하고 fgrep 의
필터 텍스트 GREP
GREP은 정규 표현식에 대한 파일 지원을 찾기 위해 지정된 형식과 일치하는 강력한 텍스트 검색 도구 명령 문자열입니다. 당신이 어떤 파일 이름을 지정하지 않거나 파일 이름을 지정하는 경우, "-", grep 명령은 표준 입력 장치로부터 데이터를 읽을 수 있습니다. 그렙, egrep을하고 fgrep 포함 그렙 가족. 매우 작은 차이 egrep을하고 주 : fgrep grep 명령. 그렙 egrep을 확장한다. 고정 그렙 또는 fgrep은 더 이상 빠른 GREP이 명령은 자신의 문자 적 의미의 정규 표현식 메타 문자 표현을 사용 특별 없다. 상기 식에서 egrep을하는 것과 "그렙 -E", "그렙 -F"에 주 : fgrep 해당. 리눅스 강력하고 풍부한 지원 많은 매개 변수에 그렙 기능은, 그들은 쉽게 텍스트 처리를 할 수 있습니다.
같은보다 두 개의 매개 변수 적어도 두 개의 매개 변수가있다, 프로그램이 중단 될 때까지 단독으로 사용되는 경우 그렙 GREP이 기다립니다. 이 같은 상황이 발생할 경우 종료 "Ctrl 키 +의 C"를 누를 수 있습니다. 재귀 검색의 "R"옵션을 사용하는 경우 기본적으로는 현재 디렉토리와 하위 디렉토리를 검색 할 수 있습니다.
# 지정된 파일에서 특정 문자열 찾기 [루트에 CentOS ~ @] # 개의 그렙 루트 / etc / passwd에 와 # 파이프 라인 겸용는 [루트에 CentOS ~ @] 등 # 고양이 / / passwd에 | 그렙 루트 #이 내용으로 표시 될 수 일치 행 번호 [CentOS는 루트 @ ~] 등 루트 / -n #의 그렙 / Passwd 파일 #이 인쇄 nginx.conf에 포함되는 행 번호 찾기 청취 [에 CentOS conf의 @ 루트] #에 그렙가 nginx.conf 청취 파이프 조인트와 함께 사용 #을 상기 경우 / sbin / ifconfig를 네트워크 시스템 구성 정보의 당시 관점을 나타냅니다, 검색 문자열은 두 번째 행의 결과가 찾고있다 "inetaddr"를 포함 # 고양이 filel [CentOS는 등 @ 루트] #의 그렙 var에 filel [CentOS는 등 @ 루트] [루트 등 @CentOS] # 개의 그렙 -v의 var에 filel의 # 쇼 라인 번호 에 CentOS 등] # @ [루트 그렙 -n VAR filel [루트 @에 CentOS의 nginx] # 경우 / sbin / ifconfig를 | 그렙 "INET 요지" # 통합 사용 $의 그렙 마법 / USR / SRC / 리눅스 / 설명서 / * | 꼬리 # 파일의 내용을 볼 # 고양이 [CentOS는 등 @ 루트] TEST.TXT을 # 지정된 검색 문자열이 시간에 민감한 경우는 #의 그렙 UUID에있는 test.txt [CentOS는 등 @ 루트] # UUID를에있는 test.txt grep을 [CentOS는 등 @ 루트]이 검색 문자열 지정 #은 대소 문자를 구별한다 CentOS는 등 @ [루트 ] #는 그렙 -i TEST.TXT UUID 스트링 매칭 #리스트 파일 이름 에 CentOS 등] #에 그렙 UUID @는 -l TEST.TXT [루트 에 CentOS 등] #에 그렙 -L UUID @ [루트는 TEST.TXT # 나열되지 일치하는 문자열을 파일명 -L #의 그렙 UUID의 TEST.TXT의 [CentOS는 등 @ 루트] # 전체 단어 일치 # 그렙 -W UU TEST.TXT [CentOS는 등 @ 루트] [루트에 CentOS 등 @] #에 그렙 UUID 테스트 -W 이 .txt 표시 라인을 제외한 # 매칭 각각 컨텍스트 행 라인을 표시 N [에 CentOS @ 루트 등] #에 그렙 -C1 UUID와의 TEST.TXT [에 CentOS @ 루트 등] # 그렙 -n -E "^ [AZ] +" TEST.TXT # 그렙 -n -E "^ [^ AZ] +"는 test.txt [CentOS는 등 @ 루트] 정규 표현식 지정된 검색 문자열로 # # 고양이 [CentOS는 등 @ 루트] 의 my.cnf # 정규 표현식 검색에 따르면 #의 그렙 -E "DATADIR | 소켓"[CentOS는 등 @ 루트]의 my.cnf # 그렙 [CentOS는 등 @ 루트] MySQL의 my.cnf의의 와 # 파이프 라인 겸용 [CentOS는 @ 루트 등] # 그렙 MySQL의 my.cnf의 | 그렙 DATADIR의 # 재귀 검색 #의 그렙 [CentOS는 등 @ 루트] -r var에 |. 머리 -3
역방향 조회 파일 이름이 테스트는 테스트 라인에 포함되지 않습니다 포함
그렙 -v 테스트 *
예 : 일치하는 파일 KKK 문자 "테스트 파일"에 대한 검색합니다.
[루트 @의 RHEL ~] #의 GREP '테스트 파일'KKK 테스트 파일
예 : 데이터 내용이 파일에 적어도 5 개 연속 AA 소문자 문자를 포함하고 표시합니다.
[루트 @의 RHEL ~] # 개의 그렙 '[AZ] \ {5 \}'AA AAAAA의 AAAAAA
예 : 컨텐츠 B / 루트 / AA 파일의 시작 부분에 줄을 찾습니다.
[루트 @의 RHEL ~] #에 그렙 ^ B / 루트 / 단 BBB
예 : 콘텐츠 파일의 출력 / 루트 / AA 행이 시작 B에 있지 않습니다.
[루트 @의 RHEL ~] #에 그렙 -v ^ B / 루트 / 단의 AAAAA AAAAA의 BBB의 AAAAAA
예 : 끝 / 루트 / KKK 파일의 내용 출력 라인 르.
[루트 @의 RHEL ~] # 개의 그렙 르 $ / 루트 / KKK 테스트 파일
stdout1.log 파일에서 찾기 '예외'라인.
그렙 '예외'stdout1.log
행 수 stdout1.log 파일에 '예외'가 찾아보십시오.
그렙 -c '예외'stdout1.log
자체가 표시되지 않습니다 그렙 과정
추신 보조 | 그렙 \ [S] SH
추신 보조 | 그렙 SSH | 그렙 -v "그렙"
출력 IP 주소
다음 ifconfig eth0를 | 그렙 -E "([0-9] {1,3} \.) {3} [0-9]"
각 문자열이 끝나는 최소 7 연속 소문자가 .txt 파일의 문자열이있는 라인에 현재 디렉토리를 표시합니다
그렙 '[AZ] \ {7 \} * .txt 인
로그 파일은, 우리는 그들이 원하는 콘텐츠를 보려면, 또는 로그 정보와 같은 데이터의 동일한 유형을 얻기 위해 너무 크고, 나쁜보기 (404)가되지 않은 필요있다
그렙 '.' access1.log | 그렙 -ev '404'> access2.log
그렙 '.' access1.log | 그렙 -ev '(404 | / 사진 / | / CSS /)'> access2.log
그렙 '.' access1.log | 그렙 -E '404'> access2.log
GREP 정규 표현식은 풍부하고 공통의 일반 메타 문자의 의미 테이블을 지원
그렙 일반 매개 변수 설명
매개 변수 | 설명 |
^ | 문자열 지정된 행의 첫 경기 |
$ | 문자열 일치의 끝을 지정합니다 |
* | 그것은 0 개 이상의 문자를 나타냅니다 |
+ | 그것은 하나 개 이상의 문자를 나타냅니다 |
\ | 특별한 의미 지정된 문자를 제거 |
^ | 지정된 행의 시작 |
$ | 지정된 행의 끝 |
. | 비 매칭 문자 개행 |
* | 이전 문자의 0 개 이상의 일치 |
[] | 지정된 범위 내에서 문자를 일치 |
[^] | 지정된 범위 내에서 하나 개의 문자가 아닌 일치 |
\ (... \) | 마크 일치하는 문자 |
< | 지정된 단어를 시작합니다 |
> | 지정된 단어의 끝 |
X {m} | 같은 반복 문자 X, m 시간은 '0 \ {5 \} O 정합 다섯 개의 행을 포함한다. |
X {m} | 문자 X 반복 적어도 m 같은 'O \ {5 \} 적어도 5 행 일치 O. |
X {M, N} | 같은 더 이상 시간 n보다 같은 문자 X, 적어도 m 번을 반복 : OK 'O \ {5, 10 \}를'일치 5--10의 오. |
W | 문자 및 숫자 문자가 매칭, 즉 [A-ZA-Z0-9] |
비 | 워드 잠금 기호 |
+ | 하나 이전 문자의 자세한 내용을 일치 |
? | 이전 문자의 0 개 이상의 일치 |
A | B | C | 매칭 B 또는 C 또는 |
() | 그룹화 기호 |
[: 건지 기용] | 영숫자 |
[: 알파 :] | 텍스트 문자 |
[:손가락:] | 숫자 문자 |
[:그래프:] | 비 공간, 제어 문자 |
[:보다 낮은:] | 소문자 |
[: CNTRL :] | 제어 문자 |
[:인쇄:] | (공백 포함) 비 null 문자 |
[포인트 :] | 구두 |
[:공간:] | 모든 공백 문자 (새 라인, 공백, 탭) |
[:높은:] | 대문자 |
[: xdigit :] | 16 진수 (0-9, AF, AF) |
일치 예 :
그렙 -c "48"TEST.TXT 통계는 모두 "48"문자 행 번호로 시작
모든 라인에 대한 그렙 -i "월"TEST.TXT 대소 문자 구분 검색 "월")
"48"TEST.TXT 표시 줄 번호 -n GREP, 같은 NL TEST.TXT에 일치하는 문자가 "48"및 행의 행 번호를 표시 | 그렙 48)
그렙 -v "48"TEST.TXT없는 디스플레이 출력 문자를 "48"모든 행)
그렙 "471"TEST.TXT 디스플레이 라인 출력 문자 "471")의 매력에 빠져
그렙 "48,"처음에 출력 문자 "48"에있는 test.txt 디스플레이 라인 및 문자 "(48)는"탭 키가있는 것입니다
그렙은 "48 [34]"선두의 문자 "48"으로 표시 출력 TEST.TXT는 제 3 문자는 "3"또는 모든 행 "4")
그렙 "^ [^ 48]"TEST.TXT 표시 라인 출력 문자 "48"의 첫 번째 라인 없음)
grep "[Mm]ay" test.txt 设置大小写查找:显示输出第一个字符以“M”或“m”开头,以字符“ay”结束的行)
grep "K…D" test.txt 显示输出第一个字符是“K”,第二、三、四是任意字符,第五个字符是“D”所在的行)
grep "[A-Z][9]D" test.txt 显示输出第一个字符的范围是“A-D”,第二个字符是“9”,第三个字符的是“D”的所有的行
grep "[35]..1998" test.txt 显示第一个字符是3或5,第二三个字符是任意,以1998结尾的所有行
grep "4/{2,/}" test.txt 模式出现几率查找:显示输出字符“4”至少重复出现两次的所有行
grep "9/{3,/}" test.txt 模式出现几率查找:显示输出字符“9”至少重复出现三次的所有行
grep "9/{2,3/}" test.txt 模式出现几率查找:显示输出字符“9”重复出现的次数在一定范围内,重复出现2次或3次所有行
grep -n "^$" test.txt 显示输出空行的行号
ls -l |grep "^d" 如果要查询目录列表中的目录 同:ls -d *
ls -l |grep "^d[d]" 在一个目录中查询不包含目录的所有文件
ls -l |grpe "^d…..x..x" 查询其他用户和用户组成员有可执行权限的目录集合
更多的例子:
搜索有the的行,并输出行号
$grep -n 'the' regular_express.txt
搜 索没有the的行,并输出行号
$grep -nv 'the' regular_express.txt
利 用[]搜索集合字符
[] 表示其中的某一个字符 ,例如[ade] 表示a或d或e
woody@xiaoc:~/tmp$ grep -n 't[ae]st' regular_express.txt
8:I can't finish the test.
9:Oh! the soup taste good!
可以用^符号做[]内的前缀,表示除[]内的字符之外的字 符。
比如搜索oo前没有g的字符串所在的行. 使用 '[^g]oo' 作搜索字符串
woody@xiaoc:~/tmp$ grep -n '[^g]oo' regular_express.txt
2:apple is my favorite food.
3:Football game is not use feet only.
18:google is the best tools for search keyword.
19:goooooogle yes!
内可以用范围表示,比如[a-z] 表示小写字母,[0-9] 表示0~9的数字, [A-Z] 则是大写字母们。[a-zA-Z0-9]表示所有数字与英文字符。 当然也可以配合^来排除字符。
搜索包含数字的行
woody@xiaoc:~/tmp$ grep -n '[0-9]' regular_express.txt
5:However ,this dress is about $ 3183 dollars.
15:You are the best is menu you are the no.1.
行首与行尾字符 ^ $. ^ 表示行的开头,$表示行的结尾( 不是字符,是位置)那么‘^$’ 就表示空行,因为只有行首和行尾。
这里^与[]里面使用的^意义不同。它表示^后面的串是在行的开头。
比如搜索the在开头的行
woody@xiaoc:~/tmp$ grep -n '^the' regular_express.txt
12:the symbol '*' is represented as star.
搜索以小写字母开头的行
woody@xiaoc:~/tmp$ grep -n '^[a-z]' regular_express.txt
2:apple is my favorite food.
4:this dress doesn't fit me.
10:motorcycle is cheap than car.
12:the symbol '*' is represented as star.
18:google is the best tools for search keyword.
19:goooooogle yes!
20:go! go! Let's go.
woody@xiaoc:~/tmp$
搜索开头不是英文字母的行
woody@xiaoc:~/tmp$ grep -n '^[^a-zA-Z]' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
21:#I am VBird
woody@xiaoc:~/tmp$
$表示它前面的串是在行的结尾,比如 '/.' 表示 . 在一行的结尾
搜索末尾是.的行
woody@xiaoc:~/tmp$ grep -n '/.$' regular_express.txt //. 是正则表达式的特殊符号,所以要用/转义
1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
4:this dress doesn't fit me.
5:However ,this dress is about $ 3183 dollars.
6:GNU is free air not free beer.
注意在MS的系统下生成的文本文件,换行会加上一个 ^M 字符。所以最后的字符会是隐藏的^M ,在处理Windows
下面的文本时要特别注意!
可以用cat dos_file | tr -d '/r' > unix_file 来删除^M符号。 ^M==/r
那么'^$' 就表示只有行首行尾的空行拉!
搜索空行
woody@xiaoc:~/tmp$ grep -n '^$' regular_express.txt
22:
23:
woody@xiaoc:~/tmp$
搜索非空行
woody@xiaoc:~/tmp$ grep -vn '^$' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
4:this dress doesn't fit me.