이름 꽉 붙잡음 ed(및 vim) 명령 g/re/p에서 가져옵니다. 이는 주어진 정규식을 전역적으로 검색하고 출력을 인쇄(표시)한다는 의미입니다.
정기적 인 표현식
유틸리티를 통해 사용자는 정규 표현식( 정규 표현식 ). 정규식은 텍스트와 11개의 특수 문자 중 하나 이상으로 구성된 검색 문자열입니다. 간단한 예는 줄의 시작을 일치시키는 것입니다.
샘플 파일
의 기본 형태 꽉 붙잡음 특정 파일 또는 파일 내에서 간단한 텍스트를 찾는 데 사용할 수 있습니다. 예제를 시도하려면 먼저 샘플 파일을 만드십시오.
nano 또는 vim과 같은 편집기를 사용하여 아래 텍스트를 마이파일 .
xyz
xyzde
엑시즈드
덱시즈
d?gxyz
xxz
xzz
xz
x*z
xz
x z
XYZ
XYZ
xYz
xyyz
xyyz
쯧쯧
텍스트의 예제를 복사하여 붙여넣을 수 있지만(큰따옴표는 제대로 복사되지 않을 수 있음) 명령을 올바르게 배우려면 입력해야 합니다.
예제를 시도하기 전에 샘플 파일을 확인하세요.
$고양이마이파일
단순 검색
파일 내에서 'xyz' 텍스트를 찾으려면 다음을 실행하십시오.
$꽉 붙잡음xyz 마이파일색상 사용
색상을 표시하려면 –color(이중 하이픈)를 사용하거나 간단히 별칭을 만듭니다. 예를 들어:
$꽉 붙잡음 --색상xyz 마이파일또는
$별명 꽉 붙잡음= '꽉 붙잡음--색상'$꽉 붙잡음xyz 마이파일
옵션
와 함께 사용되는 일반적인 옵션 꽉 붙잡음 명령에는 다음이 포함됩니다.
- -나는 모든 라인을 찾는다 상관없이 케이스의
- -씨 세다 텍스트가 포함된 줄 수
- -n 디스플레이 라인 숫자 일치하는 라인의
- -l 표시 전용 파일 이름 그 경기
- -NS 재귀적 하위 디렉토리 검색
- -v 모든 줄 찾기 아니다 텍스트를 포함하는
예를 들어:
$꽉 붙잡음 -NSxyz 마이파일# 대소문자에 상관없이 텍스트 찾기$꽉 붙잡음 -icxyz 마이파일# 텍스트가 있는 줄 수
$꽉 붙잡음 -에xyz 마이파일# 줄 번호 표시
여러 파일 만들기
여러 파일을 검색하기 전에 먼저 새 파일을 여러 개 만듭니다.
$던졌다xyz>마이파일1$던졌다 -그리고xyz xzz XYZ>마이파일2
$던졌다 -그리고xxx yyy>마이파일3
$고양이마이파일1
$고양이마이파일2
$고양이마이파일3
여러 파일 검색
파일 이름이나 와일드카드를 사용하여 여러 파일을 검색하려면 다음을 입력하십시오.
$꽉 붙잡음 -icxyz myfile myfile1 myfile2 myfile3$꽉 붙잡음 -에xyz 내*
# 'my'로 시작하는 파일 이름과 일치
운동 I
- 먼저 /etc/passwd.conf 파일에 몇 줄이 있는지 세십시오.
- 이제 텍스트의 모든 항목을 찾으십시오. 어디 /etc/passwd 파일에서 .
- 파일에서 텍스트가 포함된 줄 수 찾기
- 텍스트를 포함하지 않는 줄 수 찾기 어디 .
- 에서 로그인 항목을 찾으십시오. /etc/passwd
운동 솔루션은 이 기사의 끝에서 찾을 수 있습니다.
정규식 사용
명령 꽉 붙잡음 검색을 구체화하기 위해 11개의 특수 문자 또는 기호 중 하나 이상을 사용하여 정규식과 함께 사용할 수도 있습니다. 정규식은 다음과 같은 유틸리티 내에서 패턴 일치를 허용하는 특수 문자를 포함하는 문자열입니다. 꽉 붙잡음 , 내가왔다 그리고 세드 . 문자열을 따옴표로 묶어야 할 수도 있습니다.
사용 가능한 특수 문자는 다음과 같습니다.
^^ | 라인의 시작 |
$ | 줄 끝 |
. | 모든 문자( 개행 제외) |
* | 0개 이상의 이전 표현식 |
기호 앞에 오면 리터럴 문자가 됩니다. |
없음을 포함하여 임의의 수의 문자와 일치시키기 위해 명령줄에서 사용할 수 있는 *는 다음과 같습니다. ~ 아니다 여기에서도 같은 방식으로 사용됩니다.
또한 다음 예에서 따옴표 사용에 유의하십시오.
예
^ 문자를 사용하여 텍스트로 시작하는 모든 줄을 찾으려면:
$꽉 붙잡음'^xyz' 마이파일$ 문자를 사용하여 텍스트로 끝나는 모든 줄을 찾으려면:
$꽉 붙잡음'xyz$' 마이파일^ 및 $ 문자를 모두 사용하여 문자열을 포함하는 행을 찾으려면:
$꽉 붙잡음'^xyz$' 마이파일다음을 사용하여 라인을 찾으려면 . 모든 문자와 일치시키려면:
$꽉 붙잡음'^x.z' 마이파일*를 사용하여 이전 표현식의 0개 이상과 일치하는 행을 찾으려면:
$꽉 붙잡음'^xy*z '마이파일.*를 사용하여 0개 이상의 문자와 일치하는 행을 찾으려면:
$꽉 붙잡음'^X.*z '마이파일다음을 사용하여 라인을 찾으려면 * 문자를 이스케이프하려면:
$꽉 붙잡음'^ X *z '마이파일문자를 찾으려면 다음을 사용하십시오.
$꽉 붙잡음'\'마이파일표현식 grep – egrep
NS 꽉 붙잡음 명령은 사용 가능한 정규식의 하위 집합만 지원합니다. 그러나 명령 에그렙:
- 모든 정규식을 완전히 사용할 수 있습니다.
- 둘 이상의 표현식을 동시에 검색할 수 있음
표현식은 한 쌍의 따옴표로 묶어야 합니다.
색상을 사용하려면 –color를 사용하거나 별칭을 다시 만듭니다.
$별명 이그렙='egrep --color'하나 이상을 검색하려면 정규식 NS 이그렙 명령은 여러 줄에 걸쳐 쓸 수 있습니다. 그러나 다음과 같은 특수 문자를 사용하여 이 작업을 수행할 수도 있습니다.
| | 교대, 둘 중 하나 |
(…) | 표현식 일부의 논리적 그룹화 |
이것은 파일에서 root, uucp 또는 mail로 시작하는 줄을 추출합니다. 옵션 중 하나를 의미하는 기호.
다음 명령은 ~ 아니다 작동하지만 메시지가 표시되지는 않습니다. 꽉 붙잡음 명령은 모든 정규식을 지원하지 않습니다.
$꽉 붙잡음 '(^루트|^uucp|^메일)' /등/암호그러나 대부분의 Linux 시스템에서 명령 그렙 -E 을 사용하는 것과 동일합니다. 이그렙 :
$꽉 붙잡음 -그리고 '(^루트|^uucp|^메일)' /등/암호필터 사용
관 한 명령의 출력을 다른 명령의 입력으로 보내는 프로세스이며 사용 가능한 가장 강력한 Linux 도구 중 하나입니다.
파이프라인에 나타나는 명령은 수정된 스트림을 표준 출력으로 보내기 전에 전달된 입력을 검토하거나 수정하기 때문에 종종 필터라고 합니다.
다음 예에서 표준 출력은 ls -l 표준 입력으로 전달됩니다. 꽉 붙잡음 명령. 에서 출력 꽉 붙잡음 그런 다음 명령이 입력으로 전달됩니다. 더 명령.
이것은 디렉토리 만 표시합니다 /등 :
$엘 -NS /등|꽉 붙잡음'^d'|더다음 명령은 필터 사용의 예입니다.
$추신 -ef|꽉 붙잡음크론 $WHO|꽉 붙잡음kdm샘플 파일
복습을 시도하려면 먼저 다음 샘플 파일을 만드십시오.
nano 또는 vim과 같은 편집기를 사용하여 아래 텍스트를 사람들:
개인 J.Smith 25000개인용 E.Smith 25400
교육 A.Brown 27500
교육 C.Brown 23400
(관리자) 알브론 30500
Goodsout T.Smyth 30000
개인 F.Jones 25000
교육* C.Evans 25500
Goodsout W.Pope 30400
지상층 T.Smythe 30500
개인 J.Maler 33000
연습 II
- 파일 표시 사람들 그리고 그 내용을 검토한다.
- 문자열을 포함하는 모든 줄 찾기 스미스 people.Hint 파일에서 grep 명령을 사용하지만 기본적으로 대소문자를 구분한다는 점을 기억하십시오.
- 문자열로 시작하는 모든 행을 포함하는 새 파일 npeople을 만듭니다. 개인의 people 파일에서.힌트: >와 함께 grep 명령을 사용합니다.
- 파일을 나열하여 npeople 파일의 내용을 확인합니다.
- 이제 텍스트가 문자열로 끝나는 모든 줄을 추가하십시오. 500 people 파일에서 npeople.Hint 파일로 이동: >>와 함께 grep 명령을 사용합니다.
- 다시, 파일을 나열하여 npeople 파일의 내용을 확인합니다.
- 파일에 저장된 서버의 IP 주소 찾기 /etc/hosts .힌트: $(hostname)과 함께 grep 명령을 사용하십시오.
- 사용하다 이그렙 에서 추출 /etc/passwd 다음을 포함하는 파일 계정 라인 lp 또는 자신의 사용자 아이디 .
운동 솔루션은 이 기사의 끝에서 찾을 수 있습니다.
더 많은 정규식
정규식은 스테로이드의 와일드카드로 생각할 수 있습니다.
특별한 의미를 가진 11개의 문자가 있습니다: 여는 대괄호 [ ], 백슬래시 , 캐럿 ^, 달러 기호 $, 마침표 또는 점 ., 세로 막대 또는 파이프 기호 |, 물음표 ?, 별표 또는 별표 *, 더하기 기호 + 및 여는 대괄호 { }. 이러한 특수 문자는 종종 메타 문자라고도 합니다.
다음은 전체 특수 문자 집합입니다.
^^ | 라인의 시작 |
$ | 줄 끝 |
. | 모든 문자( 개행 제외) |
* | 0개 이상의 이전 표현식 |
| | 교대, 둘 중 하나 |
[…] | 일치시킬 명시적 문자 집합 |
+ | 1개 이상의 이전 표현 |
? | 이전 표현식의 0 또는 1 |
기호 앞에 오면 리터럴 문자가 됩니다. | |
{…} | 명시적 수량자 표기법 |
(…) | 표현식 일부의 논리적 그룹화 |
의 기본 버전 꽉 붙잡음 제한된 정규식 지원만 있습니다. 다음 예제가 모두 작동하려면 다음을 사용하십시오. 이그렙 대신 또는 그렙 -E .
다음을 사용하여 라인을 찾으려면 | 두 표현식 중 하나와 일치시키려면:
$이그렙'xxz|xzz' 마이파일다음을 사용하여 행을 찾으려면 | 문자열 내에서 두 표현식을 일치시키려면 ( )도 사용하십시오:
$이그렙'^ 엑스(Yz|yz)' 마이파일[ ]를 사용하여 임의의 문자와 일치하는 행을 찾으려면:
$이그렙'^ 엑스[예]z '마이파일[ ]를 사용하여 어떤 문자와도 일치하지 않는 행을 찾으려면:
$이그렙'^ 엑스[^ 예]z '마이파일*를 사용하여 이전 표현식의 0개 이상과 일치하는 행을 찾으려면:
$이그렙'^xy*z '마이파일+를 사용하여 이전 표현식 중 하나 이상과 일치하는 행을 찾으려면:
$이그렙'^xy+z' 마이파일를 사용하여 행을 찾으려면 ? 이전 표현식의 0 또는 1과 일치시키려면:
$이그렙'^xy?z' 마이파일연습 III
- 이름을 포함하는 모든 줄 찾기 에반스 또는 화가 파일 사람들.
- 이름을 포함하는 모든 줄 찾기 스미스, 스미스 또는 스마이스 파일 사람들.
- 이름을 포함하는 모든 줄 찾기 브라운, 브라운 또는 원천 사람 파일에 있습니다. 시간이 있다면:
- 문자열이 포함된 줄 찾기 (관리자), 대괄호를 포함하여 파일 people.
- people 파일에서 * 문자가 포함된 행을 찾으십시오.
- 위의 5와 6을 결합하여 두 표현식을 모두 찾으십시오.
더 많은 예
다음을 사용하여 선을 찾으려면 . 및 *는 모든 문자 집합과 일치합니다.
$이그렙'^xy.*z '마이파일{ }를 사용하여 N개의 문자와 일치하는 행을 찾으려면:
$이그렙'^xy{삼}z '마이파일$이그렙'^xy{4}z '마이파일
{ }를 사용하여 N번 이상 일치하는 행을 찾으려면:
$이그렙'^xy{삼,}z '마이파일{ }를 사용하여 N번 일치하지만 M번 이하로 일치하는 행을 찾으려면:
$이그렙'^xy{2,삼}z '마이파일결론
이 튜토리얼에서 우리는 먼저 꽉 붙잡음 파일 또는 여러 파일에서 텍스트를 찾는 간단한 형식입니다. 그런 다음 검색할 텍스트를 간단한 정규식과 결합한 다음 다음을 사용하여 더 복잡한 정규식을 결합했습니다. 이그렙 .
다음 단계
여기서 얻은 지식을 잘 활용하시길 바랍니다. 시험해보십시오 꽉 붙잡음 자신의 데이터에 대한 명령을 기억하고 여기에 설명된 정규식은 다음과 같은 형식으로 사용할 수 있습니다. 우리 , 세드 그리고 어이쿠 !
운동 솔루션
운동 I
먼저 파일에 몇 줄이 있는지 계산하십시오. /etc/passwd .
$ wc -l /etc/passwd
이제 텍스트의 모든 항목을 찾으십시오. 어디 /etc/passwd.conf 파일에서
$ grep var /etc/passwd
파일에서 텍스트가 포함된 줄 수 찾기 어디
텍스트를 포함하지 않는 줄 수 찾기 어디 .
꽉 붙잡음 -이력서어디/등/암호에서 로그인 항목을 찾으십시오. /etc/passwd 파일
grep kdm /etc/passwd
연습 II
파일 표시 사람들 그리고 그 내용을 검토한다.
$ cat people
문자열을 포함하는 모든 줄 찾기 스미스 파일에서 사람들 .
$ grep 'Smith' people
새 파일을 만들고, 엔피플 , 문자열로 시작하는 모든 행 포함 개인의 에서 사람들 파일
$ grep '^Personal' people> npeople
파일 내용 확인 엔피플 파일을 나열하여.
$ cat npeople
이제 텍스트가 문자열로 끝나는 모든 줄을 추가하십시오. 500 파일에서 사람들 파일에 엔피플 .
$ grep '500$' people>>npeople
다시, 파일의 내용을 확인 엔피플 파일을 나열하여.
$ cat npeople
파일에 저장된 서버의 IP 주소 찾기 /etc/hosts .
$ grep $(hostname) /etc/hosts
사용하다 이그렙 에서 추출 /etc/passwd 다음을 포함하는 파일 계정 라인 lp 또는 자신의 사용자 ID.
$ egrep '(lp|kdm:)' /etc/passwd
연습 III
이름을 포함하는 모든 줄 찾기 에반스 또는 화가 파일에서 사람들 .
$ egrep 'Evans|Maler' people
이름을 포함하는 모든 줄 찾기 스미스 , 스미스 또는 스마이스 파일에서 사람들 .
$ egrep 'Sm(i|y)the?' people
이름을 포함하는 모든 줄 찾기 갈색 , 브라우엔 또는 원천 파일 사람들.
$ egrep 'Brow?e?n' people
문자열이 포함된 줄 찾기 (관리자), 대괄호를 포함하여 파일에 사람들 .
문자가 포함된 행 찾기 * 파일 사람들.
$ egrep '*' people
위의 5와 6을 결합하여 두 표현식을 모두 찾으십시오.