[전원을 켜고] 리눅스 정규 표현식의 자세한 사용법을 텍스트 필터 grep 명령을 찾을 수

  그렙 (글로벌 검색 정규 표현식 (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.

 

  linux关系推荐:

  linux grep怎么查ip地址

  linux egrep命令在文件或标准输入中查找模式

  linux fgrep命令查找文件里符合条件的字符串

  linux rgrep命令递归查找文件里符合条件的字符串

추천

출처www.cnblogs.com/chris-oil/p/11285754.html