이번에는 Linux에서 정규식 사용에 대해 자세히 설명하겠습니다. Linux에서 정규식을 사용할 때 주의사항은 무엇인가요? 실제 사례를 살펴보겠습니다.
1. 구성
일반 문자열, 특별한 의미 없음
특수 문자: 정규 표현식에서 특별한 의미를 가짐
정규 표현식에서 자주 사용되는 메타 문자 [특수 문자]
2. POSIX의 메타 문자 BRE [기본] 및 ERE [확장]
: 일반적으로 (...)와 같은 후속 문자의 특별한 의미를 열거나 닫는 데 사용됩니다. [는 이스케이프 문자이며 기호의 특별한 의미를 제거합니다. 의미, () , {} 등은 셸에서 특별한 의미를 갖습니다.]
.와 and의 차이점:
[root@localhost ~]# cat -n test.txt
1 gd
2 god
3
4 good
5 goood
6 goad
7
8 gboad
2.1, .: 단일 문자와 일치합니다(비워둘 수 없는 null 제외)
2.2, : o와 같이 앞의 문자를 여러 번 일치시킵니다. o는 없음, 하나의 o 또는 여러 개가 될 수 있습니다. o[root@localhost ~]# grep -n "." :gd
2:god
4:good
5:goood
6:goad
8:gboad
[root@localhost ~]# grep -n "go.d" test.txt
4:good
6:goad
[root@localhost ~]# grep -n "*" test .txt*2.3, .: 모든 문자 일치(모두 일치) ), 비어 있을 수 있음**[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:god
4:good
5:goood
6:goad
8:gboad
9:gbad
11:kgbad
[root@localhost ~]# grep -n ".*" test.txt2.4, ^:...1:gd
2:good
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:좋음
5:goood
6:goad
[root@localhost ~]# grep -n "po.*" test.txt
12:poad
[root@localhost ~]# echo "pgoad" >>
[root@localhost ~]# grep -n "go.*" test.txt [go를 일치시킨 후에 모든 문자가 존재하며 비어 있을 수 있음]
2:good
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
[root@localhost tmp]# grep "^root" /etc/passwd2.5, $: 다음으로 끝나는 바로 앞의 정규식과 일치합니다...root:x :0:0:root:로 시작하여 다음 정규식을 일치시킵니다. /root:/bin/bash
[root@localhost tmp]#
[root@localhost tmp]# grep "bash$" / etc/passwd | head -12.6으로 시작하는 주석 행 및 빈 행과 일치합니다. []: 대괄호 안의 모든 문자와 일치합니다(예: [sS], s 또는 S와 일치). 여기서 하이픈(-)을 사용하여 지정할 수 있습니다. 하이픈 범위(예: [(0-9)], 모든 문자 0-9와 일치) [^0-9] ^ 기호가 첫 번째 대괄호 위치에 나타나면 목록.root:x:0:0:root:/bin/bash
[root@localhost tmp]#
^$: 빈 줄을 의미합니다. 의미
"#|^$": #
[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(기본 정규)에만 있는 문자
{n,m}: 간격 표현식, 그 앞의 단일 문자를 일치시켜 재현 [반복, 다음 단일 문자는 https{0, 1}, 즉 s를 0~1회 반복합니다. {n}은 n번 일치함을 의미하고, {n,m}은 n~m번 일치함을 의미하고, {n,}는 최소 n번 일치함을 의미하며, {,m}은 최대 m번 일치함을 의미합니다. [이스케이프 문자]
4, POSIX ERE에만 있는 문자(확장 정규)
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 , |: 여러 문자열이 일치함을 나타냅니다.
ncube-lm 1521/tcp # nCube License Managerncube-lm 1521/udp # nCube License Manager그룹 필터링[root@localhost ~]#
4.4, ( ) :그룹 필터링,
역참조
[root@localhost ~] # echo "glad" >> test.txt
[root@localhost ~]# egrep "(la|oo)" test.txtgood
gooodglad192.168.4.27[root@localhost tmp]# ifconfig |sed -rn 's#.*addr:(.*)(B.*)$#1#gp'
( ) 이전 일치 부분 참조; 괄호를 사용하면 첫 번째 대괄호의 내용이 나중에 1로 출력될 수 있습니다.
5.
메타 문자
5.1, b: 단어 경계 일치 [root@localhost tmp]# cat 테스트 test
do[root@localhost tmp]# grep "bdo" test
dodoes[root@localhost tmp]#doxy
do
[ root@localhost tmp]# grep "bdoes" test
does
[root@localhost tmp]# grep "bdob" test
do
[root@localhost tmp]#
5.2 B: 단어가 아닌 경계를 반대 방향으로 일치시킵니다. b
[root@localhost tmp]# grep "doB" test
does
doxy
agdoeg
[ root@localhost tmp]# grep "dob" test
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 중국어 웹사이트의 다른 관련 기사에도 주목해 주세요!
추천 도서:
위 내용은 Linux에서 정규식 사용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!