Linux 학습 기초 셸 프로 그래 밍 - 정규 표현 식
7199 단어 Linux
정규 표현 식 은 파일 에 조건 에 맞 는 문자열 을 일치 시 키 는 데 사 용 됩 니 다. 정규 표현 식 은 일치 하 는 문자열 을 포함 합 니 다.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.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
바이너리 파일cat 또는tail, 터미널 디코딩 시 처리 방법cat으로 바이너리 파일을 보려고 할 때 코드가 엉망이 되어 식은땀이 났다. 웹에서 스크롤된 정보의 처리 방법과alias의 설정을 요약합니다. reset 명령을 사용하여 터미널을 재설정합니다.이렇게 하면 고치지 못하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.