이번에는 리눅스에서 정규식 사용에 대한 팁을 전해드리겠습니다. 리눅스에서 정규식 사용 시 주의사항은 무엇인가요? 실제 사례를 살펴보겠습니다.
1. 구성
일반 문자열, 특별한 의미 없음
특수 문자: 정규 표현식에서 특별한 의미를 갖습니다.
정규 표현식에서 자주 사용되는 메타 문자 [특수 문자]
2. POSIX의 메타 문자 BRE [기본] 및 ERE [확장]
: 일반적으로 (...) [와 같은 후속 문자의 특수 의미를 열거나 닫는 데 사용됩니다. 기호가 제거된 이스케이프 문자입니다. 특수 의미, (), {} 등은 셸에서 특별한 의미를 갖습니다.]
.와 and의 차이점:
4: 좋음[root@localhost ~]# cat -n test.txt
[root@localhost ~]# grep -n "go.d" test.txt
1 gd
2 god
3 - n ". " test .txt "
1:gd
2:god
4:good
5:goood
6:goad
8:gboad
6:goad
7: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
8:gboad
[root@localhost ~]# echo "gbad" >>test.txt[root@localhost ~]# echo "pbad" >>test.txt10:pbad[root@localhost ~]# echo "kgbad" >>test.txt
9:gbad
[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
11:kgbad
12:poad[root@localhost ~]# grep -n "go.*" test.txt[root@localhost tmp]# grep "bash$" /etc/passwd | head -12 :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:x:0:0:root:/root:/bin/bash
[root@localhost tmp]#^$: 빈 줄을 의미합니다."#|^$": #
2.6으로 시작하는 주석 줄 및 빈 줄과 일치합니다. []: 대괄호
안의 모든 문자와 일치합니다(예: [ sS], s 또는 S와 일치). 하이픈(-)은 하이픈 범위를 지정하는 데 사용할 수 있습니다(예: [(0-9)], 0-9의 모든 문자와 일치). ^ 기호가 하이픈의 첫 번째 위치에 나타나는 경우 대괄호는 목록에 없는 문자와 일치한다는 의미입니다.
[ root@localhost tmp]# grep - E '([0-9]{1,3}.){3}[0-9]{1,3}' 호스트[root@localhost tmp]# 고양이 호스트
12.4.5.6.8
192.168.200.1
192.168.200.3
a.b.123.5
23.c.56.1
1456.1.2.4
192.168.200.1
192.168.200.31456.1.2.4
12.4.5.6.8
192.168.200.1does192.168.200.3
do
[ 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
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.34.2, + : 이전 정규 표현식 중 하나 이상과 일치
[root@localhost ~]# egrep "go+d" test.txt
god
good
goood
[root@localhost ~]#
4.3, | : 일치하는 여러 문자열[또는 관계]를 나타냅니다.
[root@localhost ~]# grep -E "3306|1521" /etc/services
4.4, ( ): 그룹 필터링, 역방향 참조
mysql 3306/tcp #MySQL
mysql 3306/udp 라이센스 관리자
[root@localhost ~]#그룹 필터링
[root@localhost ~]# echo "glad" >> test.txt
[root @localhost ~]# egrep "(la|oo)" test.txtgood
() 역참조; 이전에 일치하는 부분이 괄호를 사용하는 경우 첫 번째 괄호의 내용이 1로 출력될 수 있습니다. 후반부 등등.
goood
Glad[root@localhost tmp]# ifconfig |sed -rn 's#.*addr:(.*)(B.*)$#1#gp'
192.168.4.275. 표현식의 메타 문자
[root@localhost tmp]# cat test
5.1, b: 단어 경계 일치do[root@localhost tmp]# grep "doB" testdoes
5.2. B: b
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]#doesdoxy
5.3, d: 숫자 문자와 일치하며 [0-9]
agdoeg
[root@localhost와 반대되는 비단어 경계 일치 tmp]# grep "dob" test
do
[root@localhost tmp]#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 중국어 웹사이트의 기타 관련 기사를 참조하세요!