Linux - shell 정규 표현 식 - grep

5454 단어 LINUX
Linux - 셸 정규 표현 식 - grep
정규 표현 식
정규 표현 식 은 정규 표현 식, 일반 표현 식 이 라 고도 부른다.코드 에 서 는 regex, regexp 또는 RE 라 고 간략하게 쓰 여 있 습 니 다.정규 표현 식 은 하나의 문자열 을 사용 하여 특정한 구법 규칙 에 맞 는 일련의 문자열 을 설명 하고 일치 하 는 것 입 니 다. 쉽게 말 하면 문자열 과 일치 하 는 방법 입 니 다. 일부 특수 기 호 를 통 해 특정한 문자열 을 신속하게 찾 고 삭제 하 며 교체 할 수 있 습 니 다.
정규 표현 식 은 일반 문자 와 메타 문자 로 구 성 된 문자 모드 입 니 다.패턴 은 텍스트 를 검색 할 때 일치 하 는 문자열 하나 이상 을 설명 하 는 데 사 용 됩 니 다.정규 표현 식 은 템 플 릿 으로 검색 한 문자열 과 일치 합 니 다.그 중에서 일반 문 자 는 대소 문자, 숫자, 구두점 기호 와 다른 기 호 를 포함 하고 원 문 자 는 정규 표현 식 에서 특별한 의 미 를 가 진 전용 문 자 를 말 하 며 선도 문자 (즉 원 문자 앞 에 있 는 문자) 가 대상 에 나타 나 는 모델 을 규정 할 수 있다.
정규 표현 식 은 일반적으로 스 크 립 트 프로 그래 밍 과 텍스트 편집기 에 사 용 됩 니 다.많은 텍스트 프로세서 와 프로 그래 밍 언어 는 앞에서 언급 한 Perl, Linux 시스템 에서 흔히 볼 수 있 는 텍스트 프로세서 (grep, egrep, sed, awk) 와 같은 정규 표현 식 을 지원 합 니 다.정규 표현 식 은 강력 한 텍스트 일치 기능 을 가지 고 있어 텍스트 해양 에서 텍스트 를 신속 하고 효율적으로 처리 할 수 있다.
2. grep 명령 의 다양한 용법
1. 특정한 문 자 를 찾 습 니 다. "- n"은 줄 번 호 를 표시 하고 "- i"는 대소 문 자 를 구분 하지 않 으 며 표준 에 맞 는 문 자 를 표시 합 니 다. 글꼴 색상 은 빨간색 으로 변 합 니 다. "- v"는 역방향 검색 을 실현 합 니 다.
[root@localhost ~]# grep -in 'zhangsan' /etc/passwd
43:zhangsan:x:1002:1002::/home/zhangsan:/bin/bash
[root@localhost ~]# grep -vn 'nologin' /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
41:roo:x:1000:1000:root:/home/roo:/bin/bash
43:zhangsan:x:1002:1002::/home/zhangsan:/bin/bash

2. '[]' 를 이용 하여 집합 문 자 를 찾 습 니 다.
[root@localhost ~]# grep -n 'sh[io]rt' abc.txt
1:short
2:shirt

3. "[^]"집합 문자 의 역방향 선택 을 실현 합 니 다. "oo"앞 에 "r"가 아 닌 문자열 을 찾 습 니 다. | 기호 입 니 다.
[root@localhost ~]# grep -n '[^r|sh]oo' /etc/passwd
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
39:postfix:x:89:89::/var/spool/postfix:/sbin/nologin

4. "oo"앞 에 소문 자 와 대문자, 숫자 가 나타 나 는 것 을 원 하지 않 습 니 다. "grep - n"[^ a - zA - Z0 - 9] "a. txt"를 실행 할 수 있 습 니 다.
[root@localhost ~]# grep -n '[^a-zA-Z0-9]' abc.txt
4:_oodd
8:Ab.
9:cold.

5. 줄 이니셜 "^", "[] 안에 놓 으 면 거꾸로 가 는 것 을 표시 하고, [] 밖 에 놓 으 면 줄 이니셜 로 시작 하지 않 는 줄"[a - z] "를 표시 합 니 다.
[root@localhost ~]# grep -n '^[^a-z]' abc.txt
4:_oodd
5:12
6:13
7:14
8:Ab.

6. 포 지 셔 닝 줄 끝 $
[root@localhost ~]# grep -n '\.$' abc.txt
8:Ab.
9:cold.

7. 빈 줄 을 조회 할 때 사용 합 니 다. "grep - n"^ $"a. txt"
`[root@localhost ~]# grep -n '^$' abc.txt
5:`

8. "."로 임의의 문 자 를 찾 습 니 다. "."정규 표현 식 의 메타 문 자 는 임의의 문 자 를 대표 합 니 다.
[root@localhost ~]# grep -n 'w..d' abc.txt
11:wood
[root@localhost ~]# grep -n 'w.d' abc.txt
12:wod

9. '' '는 0 개 이상 또는 여러 개의 앞 에 있 는 단일 문 자 를 반복 하 는 것 을 의미 합 니 다.' o '는 0 개 이상 의' o '문 자 를 가지 고 있 거나 같은 문 자 를 표시 합 니 다. 빈 문 자 를 허용 하기 때문에' grep - n 'o *' a. txt '를 실행 하면 텍스트 의 모든 내용 을 출력 합 니 다.' oo * '는 첫 번 째 o 가 존재 해 야 하고 두 번 째 o 는 0 개 이상 의 o 입 니 다.' ooo * '"첫 번 째 와 두 번 째 o 는 반드시 존재 해 야 하고 세 번 째 o 는 0 개 또는 여러 개 임 을 나타 낸다."
[root@localhost ~]# grep -n 'ooo*' abc.txt
4:_oodd
11:wood
13:woood
14:wooood
15:woooood

10. 검색 은 w 로 시작 하 는 d 로 끝 납 니 다. 중간 에 있 으 나 마 나 한 문자열 입 니 다.
[root@localhost ~]# grep -n 'w.*d' abc.txt
11:wood
12:wod
13:woood
14:wooood
15:woooood
16:wd


11. 임의의 숫자 를 조회 하 는 데 익숙 하 다
[root@localhost ~]# grep -n '[0-9][0-9]*' abc.txt
6:12
7:13
8:14

12. 연속 문자 범 위 를 찾 습 니 다. "{}"은 한 범위 내 에서 중복 되 는 문자열 을 제한 할 수 있 습 니 다. 셸 에서 {} 은 특별한 의미 가 있 기 때문에 "{}"문 자 를 사용 할 때 전의 문자 "를 사용 하여"{} "문 자 를 일반 문자 로 변환 해 야 합 니 다.
두 개의 o 문 자 를 포함 하 는 줄 을 조회 합 니 다.
[root@localhost ~]# grep -n 'o\{2\}' abc.txt
4:_oodd
11:wood
13:woood
14:wooood
15:woooood

13. 조 회 는 w 로 시작 하여 d 로 끝 납 니 다. 중간 에 2 ~ 5 개의 o 문자열 이 포함 되 어 있 고 5 이상 의 o 문자열 이 포함 되 어 있 습 니 다.
[root@localhost ~]# grep -n 'wo\{2,5\}d' abc.txt
11:wood
13:woood
14:wooood
15:woooood
[root@localhost ~]# grep -n 'wo\{5,\}d' abc.txt
15:woooood

삼원 문자 의 총화
1. ^, 입력 문자열 의 시작 위치 와 일치 합 니 다. 괄호 식 에서 사용 하지 않 는 한 반 대 를 표시 합 니 다. "^"문자 자체 와 일치 하려 면 "^"를 사용 하 십시오.
2. $, 입력 문자열 의 끝 위치 와 일치 합 니 다. RegExp 대상 의 Multiline 속성 을 설정 하면 "KaTeX parse error: Undefined control sequence: at position 6:"도 일치 합 니 다.\\̲n̲’또는 '\r'. '문자 자체 와 일치 하려 면' $'를 사용 하 십시오.
3. '.', '\r' 를 제외 한 모든 문자 와 일치 합 니 다.
4.\, 다음 문 자 를 특수 문자, 원래 의 문자, 뒤로 참조, 8 진 전의 문자 로 표시 합 니 다. 예 를 들 어 'n' 은 문자 'n' 과 일치 합 니 다. '줄 바 꿈 문자' 와 일치 합 니 다. 서열 '\' 는 '\' 와 일치 하고 '(' 는 일치 합 니 다 '(')
5. *, 앞의 하위 표현 식 과 0 번 또는 여러 번 일치 합 니 다. "*"문자 와 일치 하려 면 "*"를 사용 하 십시오.
6. [], 문자 집합. 포 함 된 임의의 문자 와 일치 합 니 다. 예 를 들 어 "[abc]"는 "plain"의 "a"와 일치 할 수 있 습 니 다.
7. [n1, n2], 문자 범위. 지정 한 범위 내의 임의의 문자 와 일치 합 니 다. 예 를 들 어 "[a - z]"는 "a"에서 "z"범위 내의 임의의 소문 자 문자 와 일치 할 수 있 습 니 다. 주의: 하이픈 (-) 만 있 습 니 다.문자 그룹 내부 에 있 고 두 문자 사이 에 나타 날 때 만 문자 의 범 위 를 표시 할 수 있 습 니 다. 문자 그룹의 시작 에 나타 나 면 연결 문자 자체 만 표시 할 수 있 습 니 다.
8. {n1}, n 은 마이너스 정수 가 아 닌 n 회 입 니 다. 예 를 들 어 "o {2}"은 "Bob"의 "o"와 일치 할 수 없 지만 "food"의 두 o 와 일치 할 수 있 습 니 다.
9. {n,}, n 은 마이너스 정수 가 아 닌 n 회 입 니 다. 예 를 들 어 "o {2,}"은 "Bob"의 "o"와 일치 할 수 없 지만 "fooood"의 모든 o 와 일치 할 수 있 습 니 다. "o {1,}"은 "o +"와 같 습 니 다. "o {0,}"은 "o *"와 같 습 니 다.
10. {n, m}, m 와 n 은 모두 마이너스 정수 이 며, 그 중에서 n < = m 는 최소 n 회 일치 하고 최대 m 회 일치 합 니 다.

좋은 웹페이지 즐겨찾기