📚 모두의 리눅스 p.276 ~ 292
1. 파일에서 문자열 검색
grep [옵션] <검색 패턴> <파일 이름>
ex) /etc/passwd 파일에서 bash 문자열 검색
$ grep bash /etc/passwd
1) -n 옵션 : 행 번호 출력
ex) /etc/bash.bashrc에서 PS1 이라는 문자열을 검색하여 행 번호와 함께 출력
$ grep -n PS1 /etc/bash.bashrc
2) -i 옵션 : 대소문자 구별x
ex) system 문자열 검색
$ grep system /etc/bash.bashrc -> "system"만 검색됨.
$ grep -i system /etc/bash.bashrc -> "System", "sYsyeM", "SYSTEM" 등 검색됨.
3) -v 옵션 : 검색할 문자열이 나타나지 않는 행을 출력
ex) bash 문자열이 포함되지 않는 행 출력
$ grep -v bash /etc/passwd
2. 표준 입력에서 문자열 검색
ex) ls 명령어 출력 결과 중 cron이 포함된 행 출력
$ ls /etc | grep cron
3. (기본) 정규표현식
-조건에 일치하는 문자열 집합을 표현하는 방법
1) .(점) : 임의의 문자 하나
ex) $ grep 't.st' example.txt
test.example.txt
tfst.example.txt
tzst.example.txt
ex) $ grep 't..st' exmple.txt
tzzst.example.txt
ex) $ grep '.org' example.txt
www.example.org -> .(점)은 기호를 포함한다.
borg.example.com -> .(점)은 알파벳을 포함한다.
_1org.example.com -> .(점)은 숫자를 포함한다.
ex) $ grep '\.org' example.txt
www.example.org -> 점 기호 자체를 검색하고 싶을 때는 ' \. ' 라고 표시
2) [ ] : 여러 문자 중 하나를 지정
ex) $ grep 't[ef]st' example.txt
test.example.txt
tfst.example.txt
ex) $ grep 'mail[1-4]' example.txt
mail1.example.txt
mail2.example.txt
mail3.example.txt
mail4.example.txt
ex) $ grep 'mail[^13] example.txt -> 1,3 이외
mail1.example.txt (X)
mail3.example.txt(X)
mail7.example.txt(0)
3) ^ : 행의 시작
ex) cron으로 시작하는 문자열 검색
$ ls /etc | grep '^cron'
4) $ : 행의 마지막
ex) $ grep 'net$' example.txt
test.example.net
tfst.example.net
ex) $ grep '^$' example.txt : 시작이 곧 끝인 행 = 빈 행
5) * : 0회 이상의 반복
ex) Be*r
-> 0회 반복 : Br
-> 1회 반복 : Ber
-> 2회 반복 : Beer
$ grep 'Be*r' drink.txt
Ber
Beer
BeerBeer
BeerBeerBeer
Beeeeer!!
Br. ------> 0회 반복 포함!
ex) $ grep '^B[ea]*r$' drink.txt
( (1) B로 시작 (2) e/a 0번 이상 반복 (3) r로 끝나기 )
Ber
Beer
Bear
Br
ex) '.*' : 임의의 문자가 0회 이상 반복 = 모든 문자열
ex) ex로 시작해 txt로 끝나는 행 : $ grep '^ex.*txt$
4. 확장 정규표현식
-기본 정규표현식에서 메타 문자가 늘어난 버전
- $ grep -E
1) + : 전 문자가 1회 이상 반복
ex) Be+r
-> 0회 반복 : Br (X)
-> 1회 반복 : Ber
-> 2회 반복 : Beer
ex) $ grep -E 'Be+r' drink.txt
Ber
Beer
BeerBeer
BeerBeerBeer
Beeeeeeer!!!
Br ------------> 0회이기 때문에 해당 X
2) ? : 0회 또는 1회
ex) $ grep -E 'Wine ?Wine' drink.txt (공백 + ? : 공백이 하나 있거나 없는 경우 출력)
Wine Wine
WineWine
3) { } : 반복 횟수 지정
ex) $ grep -E 'Be{1,2}r' drink.txt (e가 1회이상 2회이하)
Ber
Beer
BeerBeer
BeerBeerBeer
ex) $ grep -E 'Be{2}r' drink.txt (e가 2회 반복)
Beer
BeerBeer
BeerBeerBeer
ex) e가 4번 이상 나타나는 패턴 검색
$ grep -E 'Be{4, }r' drink.txt
Beeeeeeeeer!!
4) ( ) : 그룹화
ex) $ grep -E '(Wine){2, }' drink.txt
(Wine 단어가 2회 이상 반복)
WineWine
5) | : OR 조건
ex) $ grep -E 'My (Vodka|Wine)' drink.txt
My Vodka
My Wine
'playdata > homework' 카테고리의 다른 글
텍스트 에디터 vim(vi) 사용법 요약 (2) | 2024.07.14 |
---|