>  기사  >  웹 프론트엔드  >  Linux에서 정규식 사용에 대한 팁

Linux에서 정규식 사용에 대한 팁

php中世界最好的语言
php中世界最好的语言원래의
2018-06-09 14:34:551130검색

이번에는 리눅스에서 정규식 사용에 대한 팁을 전해드리겠습니다. 리눅스에서 정규식 사용 시 주의사항은 무엇인가요? 실제 사례를 살펴보겠습니다.

1. 구성

일반 문자열, 특별한 의미 없음
특수 문자: 정규 표현식에서 특별한 의미를 갖습니다.
정규 표현식에서 자주 사용되는 메타 문자 [특수 문자]

2. POSIX의 메타 문자 BRE [기본] 및 ERE [확장]

: 일반적으로 (...) [와 같은 후속 문자의 특수 의미를 열거나 닫는 데 사용됩니다. 기호가 제거된 이스케이프 문자입니다. 특수 의미, (), {} 등은 셸에서 특별한 의미를 갖습니다.]
.와 and의 차이점:

[root@localhost ~]# cat -n test.txt
1 gd
2 god
3 - n ". " test .txt "
1:gd
2:god
4:good
5:goood
6:goad
8:gboad

[root@localhost ~]# grep -n "go.d" test.txt
4: 좋음

6:goad


2.2, : o와 같이 앞의 문자를 여러 번 일치시킵니다. o는 o가 아니거나 o가 하나 또는 여러 개가 될 수 있습니다. o


[root@localhost ~]# grep -n " *" test.txt
[root@localhost ~]# grep -n "o*" test.txt
1:gd
2:god
3:
4:good
5:goood

6:goad
7:

8:gboad

[root@localhost ~]# echo "gbad" >>test.txt
[root@localhost ~]# echo "pbad" >>test.txt

[root@localhost ~]# echo "kgbad" >>test.txt
[root@localhost ~]# echo "poad" >>test.txt
[root@localhost ~]# grep -n "go*" test.txt [o 확인 아니요, o 앞의 g는 일치해야 합니다. 】
1:gd
2:goood
6:goad
8:gboad
9:gbad
11:kgbad



*2.3,. 모든 문자 일치(모두 일치), 비어 있을 수 있음 **


[root@localhost ~]# grep -n ".*" test.txt
1:gd
2:god
3:
4:good
5 :goood
6:goad
7:
8:gboad

9:gbad
10:pbad

11:kgbad

12:poad
[root@localhost ~]# grep -n "go.*" test.txt

2 :god
4:good
5:goood
6:goad
[root@localhost ~]# grep -n "po.*" test.txt
12:poad
[root@localhost ~]# echo "pgoad" > ;>test.txt
[root@localhost ~]# grep -n "go.*" test.txt [go를 일치시킨 후에 모든 문자가 존재하며 비어 있을 수 있습니다.]
2:god
4:good
5:goood
6:goad
13:pgoad
[root@localhost ~]#
[root@localhost ~]# grep -n "o.*" test.txt
2:god
4:good
5:goood
6: goad
8:gboad
12:poad



2.4, ^:...


[root@localhost tmp]# grep "^root" /etc/ passwd
root:x로 시작하여 다음 정규 표현식과 일치합니다. :0:0:root:/root:/bin/bash
[root@localhost tmp]#



2.5, $: 다음으로 끝나는 바로 앞의 정규식과 일치합니다...

[root@localhost tmp]# grep "bash$" /etc/passwd | head -1

root:x:0:0:root:/root:/bin/bash

[root@localhost tmp]#
^$: 빈 줄을 의미합니다.

"#|^$": #


2.6으로 시작하는 주석 줄 및 빈 줄과 일치합니다. []: 대괄호

안의 모든 문자와 일치합니다(예: [ sS], s 또는 S와 일치). 하이픈(-)은 하이픈 범위를 지정하는 데 사용할 수 있습니다(예: [(0-9)], 0-9의 모든 문자와 일치). ^ 기호가 하이픈의 첫 번째 위치에 나타나는 경우 대괄호는 목록에 없는 문자와 일치한다는 의미입니다.

[root@localhost tmp]# 고양이 호스트
192.168.200.1
192.168.200.3
a.b.123.5
23.c.56.1
1456.1.2.4

12.4.5.6.8
[ root@localhost tmp]# grep - E '([0-9]{1,3}.){3}[0-9]{1,3}' 호스트

192.168.200.1

192.168.200.3

1456.1.2.4
12.4.5.6.8

[ root@localhost tmp]# grep -E '^([0-9]{1,3}.){3}[0-9]{1,3}$' 호스트
192.168.200.1

192.168.200.3
[ root@localhost tmp]#



2.7, ?: 이전 문자와 0개 이상의 일치


[root@localhost ~]# grep -E "go?d" test.txt
gd
god
[ root@localhost ~]#
[root@localhost tmp]# cat test
do
does
doxy
[root@localhost tmp]# grep -E "do(es)?" test

do
does

doxy

[root @localhost tmp]#




3. POSIX BRE(Basic Regular)에서만 발견되는 문자


{n,m}: 반복되기 전의 단일 문자와 일치하는 간격 표현식 [반복, https{0,1}과 같은 다음 단일 문자, 즉 0~1회 반복됩니다. {n}은 n번 일치함을 의미하고, {n,m}은 n~m번 일치함을 의미하고, {n,}는 최소 n번 일치함을 의미하며, {,m}은 최대 m번 일치함을 의미합니다. [이스케이프 문자]

4, POSIX ERE(Extended Regular)에만 있는 문자

4.1, {n,m}: BRE의 {n,m}

과 동일한 기능[root@ localhost tmp] # grep -E '^([0-9]{1,3}.){3}[0-9]{1,3}$' 호스트
192.168.200.1
192.168.200.3

4.2, + : 이전 정규 표현식 중 하나 이상과 일치

[root@localhost ~]# egrep "go+d" test.txt
god
good
goood
[root@localhost ~]#

4.3, | : 일치하는 여러 문자열[또는 관계]를 나타냅니다.

[root@localhost ~]# grep -E "3306|1521" /etc/services
mysql 3306/tcp #MySQL
mysql 3306/udp ​ ​ ​라이센스 관리자
[root@localhost ~]#


4.4, ( ): 그룹 필터링, 역방향 참조

그룹 필터링


[root@localhost ~]# echo "glad" >> test.txt
[root @localhost ~]# egrep "(la|oo)" test.txt

good
goood
Glad


() 역참조; 이전에 일치하는 부분이 괄호를 사용하는 경우 첫 번째 괄호의 내용이 1로 출력될 수 있습니다. 후반부 등등.


[root@localhost tmp]# ifconfig |sed -rn 's#.*addr:(.*)(B.*)$#1#gp'
192.168.4.27



5. 표현식의 메타 문자


5.1, b: 단어 경계 일치

[root@localhost tmp]# cat test
do

does
doxy
agdoeg
[root@localhost tmp]# grep "dob " test
do
[root@localhost tmp]# grep "bdo" 테스트
do
does
doxy
[root@localhost tmp]# grep "bdoes" 테스트
does
[root@localhost tmp]# grep "bdob" 테스트
do
[root@localhost tmp]#


5.2. B: b

[root@localhost tmp]# grep "doB" test
does

doxy
agdoeg
[root@localhost와 반대되는 비단어 경계 일치 tmp]# grep "dob" test
do
[root@localhost tmp]#


5.3, d: 숫자 문자와 일치하며 [0-9]

5.4와 동일, D: 숫자가 아닌 문자와 일치 , [^0-9]

5.5와 동일, w: 문자, 숫자 및 밑줄과 일치, [A-Za-z0-9_]

메타 문자가 많지만 여기에는 하나씩 나열되지 않습니다

사례: 간소화된 부팅


[root@localhost ~]# chkconfig --list| egrep -v "crond|network|rsyslog|sshd|sysstat" | awk '{print "chkconfig", $1,"off"}' |bash


이 기사의 사례를 읽으신 후 방법을 마스터하셨다고 믿습니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 도서

Angular 프로젝트에서 scss를 작동하는 방법


axios 302 상태 코드


위 내용은 Linux에서 정규식 사용에 대한 팁의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.