댓글 쓰기 권한이 없습니다. 로그인 하시겠습니까?
LINUX
2006.02.06 09:13
|(파이프), grep 명령어에 대해서
조회 수 35046 댓글 0
grep
계열 명령어
grep
명령어
grep의
의미
grep
: 파일 전체를 뒤져 정규표현식에 대응하는 모든 행들을 출력한다.
egrep
: grep의 확장판으로, 추가 정규표현식 메타문자들을 지원한다.
fgrep
: fixed grep 이나 fast grep으로 불리며, 모든 문자를 문자 그래도 취급한다. 즉,
정 규표현식의 메타문자도 일반 문자로
취급한다.
3.1.2
grep의 동작 방법
grep에서
사용하는 정규표현식 메타문자
grep의
옵션
#
grep -n '^jack:' /etc/passwd
(/etc/passwd
파일에서 jack을 찾는다. jack이 행의 맨 앞에 있으면 행 번호를 화면으로 출력한다.)
3.1.3
grep과 종료 상태
grep은
파일 검색의 성공 여부를 종료 상태값으로 되돌려준다.
패턴을
찾으면 0, 패턴을 찾을 수 없으면 1, 팡리이 존재하지 않을 경우 2
sed,a자
등은 검색의 성공 여부에 대한 종료 상태값을 반환하지 않는다. 다만 구문 에러가 있을 경우에만 에러를 보고한다.
3.2
정규표현식을 사용하는 grep의 예제
#
grep NW datafile
#
grep NW d*
(d로
시작하는 모든 파일에서 NW를 포함하는 모든 행을 찾는다.)
#
grep '^n' datafile
(n으로
시작하는 모든 행을 출력한다.)
#
grep '4$' datafile
(4로
끝나는 모든 행을 출력한다.)
#
grep TB Savage datafile
(TB만
인자이고 Savage와 datafile은 파일 이름이다.)
#
grep 'TB Savage' datafile
(TB
Savage를 포함하는 모든 행을 출력한다.)
#
grep '5\.' datafile
(숫자
5, 마침표, 임의의 한 문자가 순서대로 나타나는 문자열이 포함된 행을 출력한다.)
#
grep '\.5' datafile
(.5가
나오는 모든 행을 출력한다.)
#
grep '^[we]' datafile
(w나
e로 시작하는 모든 행을 출력한다.)
#
grep '[^0-9]' datafile
(숫자가
아닌 문자를 하나라도 포함하는 모든 행을 출력한다.)
#
grep '[A-Z][A-Z] [A-Z]' datafile
(대문자
2개와 공백 1개, 그리고 대문자 하나가 연이어 나오는 문자열이 포함된 행을 출력한다.)
#
grep 'ss* ' datafile
(s가
한 번 나오고, 다시 s가 0번 또는 여러번 나온 후에 공백이 연이어 등장하는 문자열을 포함한 모든 행을 출력한다.)
#
grep '[a-z]\{9\}' datafile
(소문자가
9번 이상 반복되는 문자열을 포함하는 모든 행을 출력한다.)
#
grep '\(3\)\.[0-9].*\1 *\1' datafile
(숫자
3,마침표,임의의 한 숫자,임의 개수의 문자,숫자 3(태그),임의 개수의 탭 문자,숫자 3의 순서를 갖는 문자열이 포한된 모든 행을
출력한다.)
#
grep '\<north' datafile
(north로
시작하는 단어가 포함된 모든 행을 출력한다.)
#
grep '\<north\>' datafile
(north라는
단어가 포함된 모든 행을 출력한다.)
#
grep '\<[a-z].*n\>' datafile
(소문자
하나로 시작하고, 이어서 임의 개수의 여러 문자가 나오며, n으로 끝나는 단어가 포함된 모든 행을 출력한다. 여기서 .*는 공백을 포함한 임의의
문자들을 의미한다.)
3.3
grep에 옵션 사용
#
grep -n '^south' datafile
(행번호를
함께 출력한다.)
#
grep -i 'pat' datafile
(대소문자를
구별하지 않게 한다.)
#
grep -v 'Suan Chin' datafile
(문자열
Suan Chin이 포함되지 않은 모든 행을 출력하게 한다. 이 옵션은 입력 파일에서 특정 내용의 입력을 삭제하는데 쓰인다.
#
grep -v 'Suan Chin' datafile > black
#
mv black datafile
)
#
grep -l 'SE' *
(패턴이
찾아진 파일의 행 번호 대신 단지 파일이름만 출력한다.)
#
grep -w 'north' datafile
(패턴이
다른 단어의 일부가 아닌 하나의 단어가 되는 경우만 찾는다. northwest나 northeast 등의 단어가 아니라, north라는 단어가
포함된 행만 출력한다.)
#
grep -i "$LOGNAME" datafile
(환경변수인
LOGNAME의 값을 가진 모든 행을 출력한다. 변수가 큰따옴표로 둘러싸여 있는 경우, 쉘은 변수의 값으로 치환한다. 작은따옴표로 둘러싸여
있으면 변수 치환이 일어나지 않고 그냥 $LOGNAME 이라는 문자로 출력된다.)
3.4
egrep
egrep(extended
grep) : grep에서 제공하지 않는 확장된 정규표현식 메타문자를 지원 한다.
grep와 동일한 명령행 옵션을 지원한다.
egrep에서
지원하는 확장 메타문자
3.4.1
egrep 예제
#
egrep 'NW|EA' datafile
(NW나
EA가 포함된 행을 출력한다.)
#
egrep '3+' datafile
(숫자
3이 한 번 이상 등장하는 행을 출력한다.)
#
egrep '2\.?[0-9]' datafile
(숫자
2 다음에 마침표가 없거나 한 번 나오고, 다시 숫자가 오는 행을 출력한다.)
#
egrep ' (no)+' datafile
(패턴
no가 한 번 이상 연속해서 나오는 행을 출력한다.)
#
egrep 'S(h|u)' datafile
(문자
S 다음에 h나 u가 나오는 행을 출력한다.)
#
egrep 'Sh|u' datafile
(패턴
Sh나 u를 포함한 행을 출력한다.)
3.5
고정 grep 과 빠른 grep
fgrep
: grep 명령어와 동일하게 동작한다. 다만 정규표현식 메타문자들을 특별하게 취급하지
않는다.
#
fgrep '[A-Z]****[0-9]..$5.00' file
([A-Z]****[0-9]..$5.00
이 포함된 행을 출력한다. 모든 문자들을 문자 자체로만 취급한다.)
| (파이프, pipe, 수직바) 의 뜻은 "왼쪽 프로그램의 실행 결과를 오른쪽 프로그램의 입력으로 공급하라" 입니다. 파이프 왼쪽 오른쪽 프로그램이 동시에 실행된다는 것은 엄밀히 말하면 틀린얘기입니다. 왼쪽 프로그램이 실행되고 그 결과가 output 되면 오른쪽 프로그램의 input으로 공급되는 것입니다. 동시가 아닌 순차적인 개념입니다. 예를 들면, "검색 프로그램의 출력을 정렬 프로그램으로 파이프시킬 수 있고 다시 그 결과를 프린팅 프로그램으로 파이프시키거나 파일로 리다이렉트해서 저장할 수도 있다."
grep 은 가장 유용한 툴 중의 하나입니다. grep 의 주된 기능은 정규표현식에 매칭되는 문자열을 찾아서 해당 라인만을 출력하는 것입니다. 쉽게 말해, 출력결과(or 입력)에서 찾는 문자열이 있는 라인만 보여주는 기능을 합니다.
grep 은 여러 버전이 있습니다. 가장 오래된 grep 확장 grep(또는 egrep) : 확장 정규표현식을 지원하고 grep중 가장 빠름. 소위 "fast grep" 또는 fgrep : 실제로 가장 느림.
사용방법에 대한 적절한 답변은 이미 있네요.
#netstat -ap | grep tcp 라고 하면 netstat -ap 의 결과 중에서 tcp 라는 단어가 있는 줄만 보여줍니다.
#last | grep root 하면 root 사용자 로그인 기록만 보여줍니다.
출처 : http://kin.naver.com/db/detail.php?d1id=1&dir_id=10202&eid=Z3K+A2bc3MXwqJYz91ulMLoSJc51le9D ■ grep 사용법
grep [옵션] [찾을문자] [대상파일]
[옵션] -c : 문자를 포함한 행의 갯수 -v : 문자가 존재 하지 않는 행 출력 -i : 대소문자 구분없이 검색
-cv : 문자가 존재하지 않는 행의 갯수 출력 해당 문자열이 포함된 파일명 찾기
find ./ -name " 파일명의 제약조건 " -print -exec "문자열" {}
\;
파일명의 제약 조건 : - * (제약 조건이 없다.) - *.[c] 파일명이 .c로 끝나는 파일 - *.[ch] 파일명이 .c나 .h로 끝나는 파일
예) find ./ -name "*" -print -exec grep cur_table_offset1 {} \; Dreamy의 코드 스크랩내가 모으고 내가 보는
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Designed by sketchbooks.co.kr / sketchbook5 board skin
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5