grep 용법 - 문자열 이 있 는 모든 파일 을 검색 합 니 다.
먼저 기억 해 야 할 것 은 정규 표현 식 은 마스크 와 다 르 고 의미 가 다르다 는 것 입 니 다!정규 표현 식 은 하나의 표현법 일 뿐 도구 가 이러한 표현법 을 지원 한다 면 이 도 구 는 정규 표현 식 의 문자열 을 처리 할 수 있다.vim, grep, awk, sed 는 모두 정규 표현 식 을 지원 합 니 다. 바로 정규 표현 식 을 지원 하기 때문에 강해 보 입 니 다.
(1) 기본 정규 표현 식
grep 도구 문법:
grep -[arcinv]
option: - a 텍스트 파일 로 - r 를 검색 하여 현재 디 렉 터 리 와 디 렉 터 리 에 있 는 하위 디 렉 터 리 에서 찾 습 니 다. - c 에서 찾 은 줄 에 맞 는 횟수 를 계산 합 니 다. - i 대소 문자 - n 을 무시 하고 줄 번호 - v 역방향 선택 을 출력 합 니 다. 즉, 검색 문자열 이 없 는 줄 - l 에서 파일 경로 만 출력 합 니 다.디 렉 터 리 가 상대 경로 라면 출력 도 파일 의 상대 경로 입 니 다.주: 검색 문자열 은 정규 표현 식 일 수 있 습 니 다!1. 파일 에서 문자열 이 있 는 줄 을 검색 하고 줄 번 호 를 출력 합 니 다.
# the ,
grep -n 'the' regular_express.txt
# the ,
grep -nv 'the' regular_express.txt
2 [] 를 이용 하여 집합 문자 검색
1.
[]
는 그 중의 특정한 문 자 를 나타 낸다. 예 를 들 어 [ade]
는 a 또는 d 또는 e 를 나타 낸다.grep -n 't[ae]st' regular_express.txt
8:I can't finish the test.
#
9:Oh! the soup taste good!
2. ^ 기호 로
[]
안의 접 두 사 를 만 들 고 []
안의 문 자 를 제외 한 문 자 를 표시 할 수 있 습 니 다.예 를 들 어 검색 oo
전에 g
문자열 이 없 는 줄 입 니 다. '[^g]oo'
을 검색 문자열 로 사용 합 니 다.grep -n '[^g]oo' regular_express.txt
2:apple is my favorite food.
3:Football game is not use feet only.
18:google is the best tools for search keyword.
19:goooooogle yes!
3.
[]
안에 범위 로 표시 할 수 있다. 예 를 들 어 [a-z]
는 소문 자 를 나타 내 고 [0-9]
는 0 ~ 9 의 숫자 를 나타 내 며 [A-Z]
는 대문자 들이다.[a-zA-Z0-9]
모든 숫자 와 영문 문 자 를 나타 낸다.물론 문 자 를 제외 하기 위해 ^
에 맞 출 수도 있다.#
grep -n '[0-9]' regular_express.txt
5:However ,this dress is about $ 3183 dollars.
15:You are the best is menu you are the no.1.
3 줄 의 첫머리 와 줄 의 끝 문자
^ $
^
줄 의 시작 을 나타 내 고 $
줄 의 끝 (문자 가 아니 라 위치) 을 나타 내 면 ‘^$’
줄 의 끝 과 줄 의 끝 만 있 기 때문이다.^
는 []
에서 사용 하 는 ^
와 의미 가 다르다.^
는 앞 에 있 는 꼬치 가 줄 의 끝 임 을 나타 낸다. 예 를 들 어 $
은 한 줄 의 끝 에 있 는 검색 끝 에 '\.&'
줄 # the
grep -n '^the' regular_express.txt
12:the symbol '*' is represented as star.
#
grep -n '^[a-z]' regular_express.txt
2:apple is my favorite food.
4:this dress doesn't fit me.
10:motorcycle is cheap than car.
12:the symbol '*' is represented as star.
18:google is the best tools for search keyword.
19:goooooogle yes!
20:go! go! Let's go.
#
grep -n '^[^a-zA-Z]' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
21:#I am VBird
MS 시스템 에서 생 성 된 텍스트 파일 을 주의 하 십시오. 줄 을 바 꾸 면 ^ M 문자 가 추 가 됩 니 다. 따라서 마지막 문 자 는 숨겨 진 ^ M 입 니 다. Windows 아래 텍스트 를 처리 할 때 특히 주의 하 십시오.
.
로 ^ M 기 호 를 삭제 할 수 있 습 니 다. cat dos_file | tr -d '/r' > unix_file
^M==/r
첫 줄 끝의 빈 줄 만 있 음 을 나타 낸다! grep -n '\.$' regular_express.txt
#. , \
1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
4:this dress doesn't fit me.
5:However ,this dress is about $ 3183 dollars.
6:GNU is free air not free beer.
bash 에서
'^$'
는 모든 문 자 를 대표 하 는 마스크 입 니 다. 그러나 정규 표현 식 에 서 는 의미 가 다 릅 니 다. *
는 *
개 이상 의 문 자 를 표시 합 니 다. 예 를 들 어 0
는 첫 번 째 oo*
가 반드시 존재 하고 두 번 째 o
는 하나 이상 있 을 수도 있 고 없 을 수도 있 기 때문에 대표 o
입 니 다. 점 o
임의의 문 자 를 대표 합 니 다. 존재 해 야 합 니 다.#
grep -n '^$' regular_express.txt
22:
23:
#
grep -vn '^$' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
4:this dress doesn't fit me.
5 연속 중복 문자 의 범위 제한 {}
.
0 개 이상 만 제한 할 수 있 으 며 문자 중복 수량 을 정확하게 제한 하려 면 g??d
을 사용 하 라. 'g..d'
은 숫자 용 . *
으로 분리 { }
는
개, 2 는 2 개, ,
는 2 에서 더 많은 주 의 를 나타 낸다. 2,5
는 SHELL 에 특별한 의미 가 있 기 때문에 정규 표현 식 으로 사용 할 때 2~5
로 의 미 를 바 꿔 야 한다.grep -n 'g..d' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
9:Oh! the soup taste good!
16:The world is the same with 'glad'.
# o
grep -n 'ooo*' regular_express.txt
# o , o , 。
1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
9:Oh! the soup taste good!
18:google is the best tools for search keyword.
19:goooooogle yes!
# g , o , gog, goog....gooog...
grep -n 'goo*g' regular_express.txt
18:google is the best tools for search keyword.
19:goooooogle yes!
# g
grep -n 'g.*g' regular_express.txt
#.* 0
1:"Open Source" is a good mechanism to develop programs.
14:The gd software is a library for drafting programs.
18:google is the best tools for search keyword.
19:goooooogle yes!
20:go! go! Let's go.
셸 의 역방향 선택 은 [! range] 이 고, 정규 안 은 [^ range] 입 니 다.
(2) 확장 정규 표현 식
확장 정규 표현 식 은 기본 정규 표현 식 에 몇 가지 특수 한 구성 을 추가 합 니 다. 일부 작업 을 더욱 편리 하 게 합 니 다. 예 를 들 어 빈 줄 과 줄 의 첫 번 째 줄 을 제거 하려 면 다음 과 같이 사용 합 니 다.
```
# o 。
grep -n 'o/{2/}' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
9:Oh! the soup taste good!
18:google is the best tools for search keyword.
19:goooooogle yes!
# g 2~5 o, g 。
grep -n 'go/{2,5/}g' regular_express.txt
18:google is the best tools for search keyword.
# g 2 o, g 。。
grep -n 'go/{2,/}g' regular_express.txt
18:google is the best tools for search keyword.
19:goooooogle yes!
```
그러나 확장 정규 표현 식 을 지원 하 는 egrep 과 확장 특수 기호
2,
를 사용 하면 훨씬 편리 합 니 다. grep 는 기본 표현 식 만 지원 하고 egrep 은 확장 을 지원 합 니 다. 사실 egrep 는 { }
의 별명 일 뿐 입 니 다. 따라서 \
확장 정규 를 지원 합 니 다.grep -v '^$' regular_express.txt | grep -v '^#'
"Open Source" is a good mechanism to develop programs.
apple is my favorite food.
Football game is not use feet only.
this dress doesn't fit me.
............
여기
|
는 표시 하거나 관계 합 니 다. 즉, 만족 grep -E
또는 grep -E
문자열 입 니 다.확장 특수 기호 몇 개 를 보 여 줍 니 다.
|
는. * 와 유사 합 니 다. 하나 이상 의 중복 문 자 를 표시 합 니 다. ^$
는. * 와 유사 합 니 다. 0 개 또는 한 문 자 를 표시 합 니 다. ^#
는 'gd | good | dog' 과 같은 gd, good 또는 dog 의 문자열 +
을 표시 합 니 다.일부 내용 을 하나의 유닛 그룹 으로 합성 합 니 다. 예 를 들 어 glad 나 good 를 검색 하려 면 'g (la | oo) d' () 의 장점 은 그룹 에 사용 할 수 있 습 니 다 ?
등 입 니 다. 예 를 들 어 A 와 C 의 시작 부분 을 검색 하려 면 중간 에 적어도 하나의 |
꼬치 가 있 습 니 다. 이렇게 할 수 있 습 니 다. ()
Edited by JC! 2019 - 02 - 19 17: 30: 58 화요일마 왕 ISDevil 's Blog » grep 용법 - 어떤 문자열 이 들 어 있 는 모든 파일 검색
좋아 하 다
1)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.