Linux 학습 기초 셸 프로 그래 밍 - 정규 표현 식

7199 단어 Linux
1. 정규 표현 식 과 마스크
정규 표현 식 은 파일 에 조건 에 맞 는 문자열 을 일치 시 키 는 데 사 용 됩 니 다. 정규 표현 식 은 일치 하 는 문자열 을 포함 합 니 다.grep, awk, sed 등 명령 은 정규 표현 식 을 지원 할 수 있 습 니 다.
'어댑터 는 조건 에 맞 는 파일 이름 에 사 용 됩 니 다. 어댑터 는 완전히 일치 합 니 다.ls, find, cp 등 이 명령 들 은 정규 표현 식 을 지원 하지 않 기 때문에 셸 자신의 마스크 를 사용 하여 일치 시 킬 수 밖 에 없습니다.
주: Linux 에서 정규 와 어댑터 의 차이 가 비교적 크 고 다른 프로 그래 밍 언어 에서 어댑터 는 정규 중의 일부분 에 속 합 니 다.
2. 기본 정규 표현 식:
문자
역할.
*
이전 문자 가 0 번 이나 여러 번 일치 합 니 다.
.
일치 하 는 줄 바 꾸 기 를 제외 한 임의의 문자
^
행수 일치.예 를 들 어 ^ hello 는 hello 로 시작 하 는 줄 과 일치 합 니 다.
$
줄 의 끝 과 일치 하 다.예 를 들 어 hello & hello 로 끝 나 는 줄 과 일치 합 니 다.
[ ]
괄호 에서 지정 한 임의의 문자 와 일치 합 니 다. 한 글자 만 일치 합 니 다.예 를 들 어 [aoeiu] 는 임의의 모음 자모 와 일치 하고 [0 - 9] 는 임의의 숫자 와 일치 하 며 [a - z] [0 - 9] 는 소문 자 와 한 숫자 로 구 성 된 두 글자 와 일치 합 니 다.
[^  ]
괄호 를 제외 한 임의의 문자 와 일치 합 니 다. 예 를 들 어 [^ 0 - 9] 는 비 숫자 문자 와 일치 합 니 다. [^ a - z] 는 비 소문 자 와 일치 합 니 다.
\
전의 부. 특수 기호의 의 미 를 취소 하 는 데 사용 합 니 다.
\{n\}
앞의 문자 가 n 번 이나 나 타 났 음 을 나타 낸다. 예 를 들 어 [0 - 9]\{4\} 은 4 자리 숫자 와 일치 하고 [1] [3, 8] [0 - 9]\{9\} 은 핸드폰 번호 와 일치 하 다.
\{n ,\}
앞의 문자 가 n 번 이상 나타 나 는 것 을 나타 낸다. 예 를 들 어 [0 - 9]\{2,\} 은 두 자리 이상 의 숫자 를 나타 낸다.
\{n , m\}
앞의 문 자 는 적어도 n 번, 최대 m 번 나타 나 는 것 을 나타 낸다. 예 를 들 어 [a - z]\{6, 8\} 은 6 ~ 8 자리 와 일치 하 는 소문 자 를 나타 낸다.
주의:
1) 마스크 의 * 번 과 정규 중의 * 번 은 차이 가 있다.
2) 정규 중의... 어댑터 에 해당 하 는?
다음 테스트 문서 내용:
[root@localhost sh]# vim zhengzetest

Mr. XiaoxiaoZhou said:

he was the honest man in his School.

123 despise him.

But since Mr. Li lei came,
he never saaaid those words.
5555nice!

because,actunaaaally,
Mr. Li lei is teh most honest man!

Later,Mr. XiaoxiaoZhou sold his hot body.


~                                          

예시 1,
“* ”   이전 문자 가 0 번 일치 하거나 여러 번 일치 합 니 다.
》grep "a*"test_rules.txt
\# 빈 줄 을 포함 하여 모든 내용 과 일치 합 니 다.
》grep "aa*"test_rules.txt
\# 일치 하 는 줄 은 최소한 a 가 있 는 줄 을 포함 합 니 다.
》grep "aaa*"test_rules.txt
\# 일치 하 는 최소 두 개의 연속 a 문 자 를 포함 합 니 다.
》grep "aaaaa*"test_rules.txt
\# 는 최소 4 개의 연속 a 를 포함 하 는 문자열 과 일치 합 니 다.
[root@localhost sh]# grep "a*" zhengzetest 
Mr. XiaoxiaoZhou said:

he was the honest man in his School.

123 despise him.

But since Mr. Li lei came,
he never saaaid those words.
5555nice!

because,actunaaaally,
Mr. Li lei is teh most honest man!

Later,Mr. XiaoxiaoZhou sold his hot body.


[root@localhost sh]# grep "aa*" zhengzetest 
Mr. XiaoxiaoZhou said:
he was the honest man in his School.
But since Mr. Li lei came,
he never saaaid those words.
because,actunaaaally,
Mr. Li lei is teh most honest man!
Later,Mr. XiaoxiaoZhou sold his hot body.
[root@localhost sh]# grep "aaa*" zhengzetest 
he never saaaid those words.
because,actunaaaally,
[root@localhost sh]# grep "aaaaa*" zhengzetest 
because,actunaaaally,
[root@localhost sh]# 

예제 2, "."는 줄 바 꿈 자 를 제외 한 임의의 문자 와 일치 합 니 다.
》grep "s..d"test_rules.txt
\# "s. d"는 s 와 d 라 는 두 글자 사이 에 반드시 두 글자 가 있 는 단어 와 일치 합 니 다.
》grep "s.*d"test_rules.txt
\# s 와 d 자모 사이 에 임의의 문자 가 일치 합 니 다.
》grep ".*"test_rules.txt
\# 모든 내용 일치
[root@localhost sh]# grep "s..d" zhengzetest 
Mr. XiaoxiaoZhou said:
Later,Mr. XiaoxiaoZhou sold his hot body.
[root@localhost sh]# grep "s.*d" zhengzetest 
Mr. XiaoxiaoZhou said:
he never saaaid those words.
Later,Mr. XiaoxiaoZhou sold his hot body.
[root@localhost sh]# grep ".*" zhengzetest 
Mr. XiaoxiaoZhou said:

he was the honest man in his School.

123 despise him.

But since Mr. Li lei came,
he never saaaid those words.
5555nice!

because,actunaaaally,
Mr. Li lei is teh most honest man!

Later,Mr. XiaoxiaoZhou sold his hot body.


[root@localhost sh]# 

예제 3, "^"는 줄 의 첫머리 와 일치 하고, "$"는 줄 의 끝 과 일치 합 니 다.
》grep "^M"zhengzetest
\# 대문자 "M"으로 시작 하 는 줄 과 일치 합 니 다.
》grep “n$”  zhengzetest
\# 소문 자 "n"으로 끝 나 는 줄 과 일치 합 니 다.
》grep -n "^$"zhengzetest
\# 빈 줄 과 일치 합 니 다.
[root@localhost sh]# grep "^M" zhengzetest 
Mr. XiaoxiaoZhou said:
Mr. Li lei is teh most honest man!
[root@localhost sh]# grep "n$" zhengzetest 
[root@localhost sh]# grep -n "^$" zhengzetest 
2:
4:
6:
10:
13:
15:
16:
[root@localhost sh]# vim zhengzetest
[root@localhost sh]# grep "e$" zhengzetest 
[root@localhost sh]# vim zhengzetest
[root@localhost sh]# grep ",$" zhengzetest 
But since Mr. Li lei came,
because,actunaaaally,
[root@localhost sh]# 

예시 4, "[ ]”괄호 에서 지정 한 임의의 문자 와 일치 합 니 다. 한 글자 만 일치 합 니 다.
》grep "s[ao]id"zhengzetest
\# s 와 i 자모 가 일치 하거나 a 가 아니면 o 가 일치 합 니 다.
》grep“[0-9]” zhengzetest
\# 임의의 숫자 와 일치 합 니 다.
》grep "^[a-z]"zhengzetest
\# 소문 자로 시작 하 는 줄 과 일치 합 니 다.
[root@localhost sh]# 
[root@localhost sh]# grep "s[ao]id" zhengzetest 
Mr. XiaoxiaoZhou said:
[root@localhost sh]# grep "[0-9]" zhengzetest 
123 despise him.
5555nice!
[root@localhost sh]# grep "^[a-z]" zhengzetest 
he was the honest man in his School.
he never saaaid those words.
because,actunaaaally,
[root@localhost sh]# 

예제 5, "[^]"는 괄호 안의 문 자 를 제외 한 임의의 문자 와 일치 합 니 다.
》grep "^[^a-z]"zhengzetest
\# 소문 자로 시작 하지 않 는 줄 과 일치 합 니 다.
》grep "^[^a-zA-Z]"zhengzetest
\# 알파벳 으로 시작 하지 않 는 줄 과 일치 합 니 다.
[root@localhost sh]# grep "^[^a-z]" zhengzetest 
Mr. XiaoxiaoZhou said:
123 despise him.
But since Mr. Li lei came,
5555nice!
Mr. Li lei is teh most honest man!
Later,Mr. XiaoxiaoZhou sold his hot body.
[root@localhost sh]# grep "^[^a-zA-Z" zhengzetest 
grep:       [   [^
[root@localhost sh]# grep "^[^a-zA-Z]" zhengzetest 
123 despise him.
5555nice!
[root@localhost sh]# 

예시 6, "\"전의 부호
》grep "\.$"zhengzetest     
\# "."끝 줄 과 일치 합 니 다.  정규 표현 식 이나 셸 에 특별한 의미 가 있 기 때문에 사용 하고 싶 습 니 다.
가장 일반적인 영문 마침표 기능 은 셸 에 있 는 특수 한 의 미 를 전의 문자 로 제거 하고 다시 사용 할 수 밖 에 없다.
[root@localhost sh]# grep "\.$" zhengzetest 
he was the honest man in his School.
123 despise him.
he never saaaid those words.
Later,Mr. XiaoxiaoZhou sold his hot body.
[root@localhost sh]# 

예제 7, "\{n\}"은 앞의 문자 가 마침 n 번 나 타 났 음 을 나타 낸다.
》grep "a\{3\}"zhengzetest
\# a 자모 와 일치 하 는 세 번 연속 문자열
》grep "[0-9]\{3}"zhengzetest
\# 연속 세 개의 숫자 를 포함 하 는 문자열 과 일치 합 니 다.
[root@localhost sh]# grep "a\{3\}" zhengzetest 
he never saaaid those words.
because,actunaaaally,
[root@localhost sh]# grep "[0-9]\{3\}" zhengzetest 
123 despise him.
5555nice!
[root@localhost sh]# 

예제 8, "\{n, m\}"은 앞의 문자 와 일치 하여 최소 n 번, 최대 m 번 나타 납 니 다.
》grep "sa\{1,3\}i"zhengzetest
\# 알파벳 s 와 알파벳 i 사이 에 최소 a, 최대 3 개의 a 가 일치 합 니 다.
[root@localhost sh]# grep "sa\{1,3\}" zhengzetest 
Mr. XiaoxiaoZhou said:
he never saaaid those words.

좋은 웹페이지 즐겨찾기