grep 정규 표현 식 과 일치
- E 옵션 이 없 는 grep 를 사용 할 때 기본 정규 매 칭 을 지원 합 니 다.예 를 들 어 'abc' 키워드 검색, '^ abc' 는 줄 의 첫 번 째 와 일치 하고 'abc $' 는 줄 의 끝 과 일치 합 니 다.
grep 'bash' /etc/passwd #输出包含bash的行
grep '^r' /etc/passwd #匹配以r开头的行
grep 'in$' /etc/passwd #匹配以in结尾的行
여러 조건 을 검색 하면 예 를 들 어 'root' 또는 'daemon' 으로 시작 하 는 줄 을 출력 하거나 기본 정규 에서 '|' 은 '\|' 로 바 꿔 야 합 니 다.
grep '^root|^daemon' /etc/passwd #搜索无结果
grep '^root\|^daemon' /etc/passwd #正确获得结果
grep - E 또는 egrep 명령 을 사용 하면 확장 정규 일치, '|' 등 정규 표현 식 의 특수 문 자 를 자동 으로 식별 할 수 있 습 니 다. 예 를 들 어:
grep -E '^root|^daemon' /etc/passwd
egrep '^root|^daemon' /etc/passwd
2. grep, egrep 명령 의 - q 옵션
옵션 - q quiet (침묵) 의 뜻 을 표시 합 니 다. 이 옵션 을 사용 하면 출력 대신 검색 만 할 수 있 습 니 다. 보통 스 크 립 트 에서 찾 는 대상 이 존재 하 는 지 여 부 를 식별 합 니 다.
상태 로 돌아 가기%?무관 한 텍스트 정 보 를 무시 하고 스 크 립 트 출력 을 간소화 할 수 있 음 을 판단 합 니 다.
시스템 에 www 사용자 정보 가 있 는 지 확인 하고 존재 하면 YES 를 표시 합 니 다. 그렇지 않 으 면 NO 를 출력 합 니 다.
[root@localhost ~]# grep 'www' /etc/passwd && echo "YES" || echo "NO"
www:x:1002:1002::/home/www:/sbin/nologin
YES
더하기 - q 옵션 후:
[root@localhost ~]# grep -q 'www' /etc/passwd && echo "YES" || echo "NO"
YES
출력 정 보 를 무시 하고 판단 결과 만 표시 하 며 쉽게 식별 할 수 있 습 니 다. - q 옵션 의 효과 와 사용 & > /dev/null 유사
3. - c 옵션, 출력 에 일치 하 는 줄 수
사용자 중 로그 인 셸 이 "/sbin/nologin"인 사용자 개 수 를 통계 합 니 다.
[root@localhost ~]# grep -c 'sbin/nologin$' /etc/passwd
48
- c 옵션 을 통 해 일치 하 는 줄 수 를 출력 할 수 있 습 니 다. wc - l 의 효과 와 같 지만 쓰기 가 간단 합 니 다. 예 를 들 어 로그 인 가능 한 시스템 의 사용자 개 수 를 통계 합 니 다.
[root@localhost ~]# grep -c '/bin/bash' /etc/passwd
4
혹은
[root@localhost ~]# grep '/bin/bash' /etc/passwd | wc -l
4
4. 기본 문자
". " 임의의 단일 문자 일치
출력/etc/rc. local 파일 에는 빈 줄 이 아 닌 최소한 한 글자 의 줄 이 포함 되 어 있 습 니 다.
[root@localhost ~]# grep '.' /etc/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
출력 빈 줄 (- v 반대):
[root@localhost ~]# grep -v '.' /etc/rc.local
위 에서 빈 줄 을 취 하 는 작업 은 아래 작업 효과 와 같 습 니 다.
[root@localhost ~]# grep '^$' /etc/rc.local
+ 、?、* 목표 출현 횟수
출력 은 "f"를 포함 하 는 줄, 즉 "f"가 한 번 이상 나타 납 니 다.
[root@localhost ~]# egrep 'f+' /etc/rc.local
# to run scripts during boot instead of using this file.
# this script will NOT be run after all other services.
init, initial 을 포함 하 는 줄 을 출력 합 니 다. 즉, 끝의 'ial' 이 최대 한 번 나타 납 니 다.
[root@localhost ~]# egrep 'init(ial)?' /etc/rc.local
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
출력 은 stu, stuf, stuff, stuff f 를 포함 합 니 다.대상 이 한 글자 만 중복 되 었 을 때 괄호 를 사용 하지 않 아 도 됩 니 다.
[root@localhost ~]# egrep 'stuf*' /etc/rc.local
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
모든 줄 을 출력 합 니 다. 단독 '. *' 은 임의의 줄 과 일치 할 수 있 습 니 다 (빈 줄 포함).
[root@svr5 ~]# egrep '.*' /etc/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
출력/etc/passwd 에서 'r' 로 시작 하고 'nologin' 으로 끝 나 는 줄:
[root@localhost ~]# egrep '^r.*nologin$' /etc/passwd
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
{ } 출현 횟수 범 위 를 한정 하 다
egrep '(ab){3}' a.txt #输出ab连续出现三次的行,即ababab
egrep '(ab){2,4}' a.txt #输出ab连续出现2~4次的行,即abab,ababab,abababab
egrep '(ab){3,}' a.txt #输出ab至少出现三次的行,即ababab,abababab,……
[ ] 일치 하 는 범위 내의 단일 문자
출력 은 abc, abd 를 포함 하 는 줄, 즉 앞의 두 문 자 는 ab 이 고 세 번 째 문 자 는 c, d 중 하나 면 조건 에 부합 합 니 다.
egrep 'ab[cd]' a.txt
알파벳 이 아 닌 줄 을 출력 합 니 다.
egrep '[^a-zA-Z]' a.txt
\ 단어 경계
출력/etc/rc. local 에 단어 'init' 줄 이 포함 되 어 있 습 니 다. initialization 은 요구 에 맞지 않 습 니 다.
[root@localhost ~]# egrep '\' /etc/rc.local
# This script will be executed *after* all the other init scripts.
# want to do the full Sys V style init stuff.
"ll"로 끝 나 는 단어의 줄 을 출력 합 니 다.\> 단어 오른쪽 경계 와 일치 하 는 단 어 를 사용 하 십시오.
[root@localhost ~]# egrep 'll\>' /etc/rc.local
# This script will be executed *after* all the other init scripts.
# want to do the full Sys V style init stuff.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZSH에서 물고기까지ZSH는 수년 동안 내 기본 셸이었습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다. 우리는 을 제공하는 시스템과 더 빨리 상호 작용하는 경향이 있습니다. 내.zshrc 구성에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.