UNIX 및실습 7 장. 파일과디렉토리검색하기 1
학습목표 파일의내용을검색하는방법을익힌다. 조건에맞는파일과디렉토리를찾는방법을익힌다. 명령이있는위치를찾는방법을익힌다. 2
01. 파일내용검색 - grep global regular expression print 지정한파일에특정문자열 ( 패턴 ) 이들어있는지검색 패턴 문자, 문자열, 문장, 정규표현식 (regular expression) 옵션 옵션 grep [ 옵션 ] 패턴파일명들 -i 대소문자를무시하고검색 기능 -l 해당패턴이들어있는파일이름을출력 -n 각라인의번호도함께출력 -v 명시된패턴과일치하지않는줄을출력 -c 패턴과일치하는라인수출력 -w 패턴이하나의단어로된것만검색 3
정규표현식 (Regular Expression) (1) 검색에서동일한문자와일치시키는데사용되는문자패턴 정규표현식에사용되는메타 (meta) 문자 ^. * [ ] [a-z] [^ ] \ 줄의시작지시자 줄의끝지시자 문자한개와일치 0 개이상의문자와일치 설정중한문자와일치 설정한범위안의한문자와일치 설정에속하지않은문자와일치 메타문자기능제거 4
정규표현식 (Regular Expression) (2) 여러유닉스 / 리눅스프로그램에서사용되는추가메타문자 \< 단어의시작지시자 \> 단어의끝지시자 \(..\) 나중에사용하기위한태그일치문자 x\{m\} x문자를 m번반복 x\{m, \} x문자를적어도 m번이상반복 x\{m,n\} x문자를 m번이상 n번이하반복 예 /\<love/ : love로시작하는단어가포함된줄 /love\>/ : love로끝나는단어가포함된줄 o\{5, 10\} : o가 5번이상 10번이하반복되는문자열 5
grep 의미 grep 명령 ex 편집기프로그램에서기원 문자검색을위해 :/pattern/p (pattern 이있는줄출력 ) 보통범위 ( 전체파일 ) 를지정하기위해 :g/pattern/p 이패턴이정규표현식 :g/re/p 6
파일내용검색 - grep grep 명령사용예제 기본데이터 (grep.dat) UNIX 12345 unix+ 123 system admin Network 5 root other sh sjyoun prof ksh jongwon prof KSH ROOT other csh ck07555 student ksh CK08777 student bash 1) 기본검색 grep unix grep.dat unix+ 123 2) 대소문자무시 -i grep -i unix grep.dat UNIX 12345 unix+ 123 7
파일내용검색 - grep grep 명령사용예제 기본데이터 (grep.dat) UNIX 12345 unix+ 123 system admin Network 5 root other sh sjyoun prof ksh jongwon prof KSH ROOT other csh ck07555 student ksh CK08777 student bash 3) 파일이름출력 : -l grep -l unix *.dat grep.dat 4) 줄번호출력 : n grep -n unix grep.dat 2:unix+ 123 8
파일내용검색 - grep grep 명령사용예제 기본데이터 (grep.dat) UNIX 12345 unix+ 123 system admin Network 5 root other sh sjyoun prof ksh jongwon prof KSH ROOT other csh ck07555 student ksh CK08777 student bash 5) 불일치 : -v grep v unix grep.dat UNIX 12345 system admin Network 5 6) 일치하는줄수 : c grep -c 123 grep.dat 2 9
파일내용검색 - grep grep 명령사용예제 기본데이터 (grep.dat) UNIX 12345 unix+ 123 system admin Network 5 root other sh sjyoun prof ksh jongwon prof KSH ROOT other csh ck07555 student ksh CK08777 student bash 7) 단어검색 : -w grep w 123 grep.dat unix+ 123 8) 다중옵션사용 grep -ni unix grep.dat 1:UNIX 12345 2:unix+ 123 10
[ 실습하기 ] 파일내용검색 - grep 실습하기 데이터파일 : h.txt root other sh ROOT csh user1 USER2 12root ksh user1 KSH csh 1) grep sh h.txt 2) grep -w sh h.txt 3) grep -v root h.txt 4) grep I root h.txt 5) grep -ci sh h.txt 6) grep user1 /etc/passwd 7) grep root /etc/passwd 8) grep root /etc/group 9) grep other /etc/group 결과를예측해봅시다 11
[ 실습하기 ] 파일내용검색 - grep 실습하기 데이터파일 : h.txt root other sh ROOT csh user1 USER2 12root ksh user KSH csh 1) 1 만검색하기위한명령은? 2) 1 이들어있지않은라인을검색하기위한명령은? 3) User 를대소문자구분없이검색하기위한명령은? 4) sh 가들어간라인의수를구하는명령은? 5) 정확히 sh 만들어간라인의수를구하는명령은? 6) root 가들어간라인을찾아파일 h.out 에저장하는명령은? 12
정규표현식 특정한규칙을가진문자열의집합을표현하는데사용하는형식언어구성요소 앵커 ( Anchor) : 검색시한줄에서패턴의위치를표현 (^, ) 문자집합 (Character Set) : 하나이상의무자들을표현 ( 알파벳, 숫자,.,[],..) 변환자 (Modifier) : 이전문자집합의반복횟수지정 (*) 특수문자 문자의미예결과 ^ 라인의시작 ^ 문자열 문자열로시작하는모든행 라인의끝 문자열 문자열로끝나는모든행. 한글자 a b 한글자대응, a 로시작해서 b 로끝나는 5 글자검색? 없거나한글자 patter? patter 또는 patter 과한문자더있는문자열검색 (pattern, pattera 등 ) [ ] 괄호안의글자중하나 [Pp]attern Pattern 또는 pattern 이나타나는라인검색 [^] * 괄호안에있는글자가아닌글자 앞의항목이없거나여러번반복 [^a-m]att ab* att 앞에 a 부터 m 까지나오지않는라인검색 a 다음에 b 가없거나반복적으로나타나는라인검색 13
[ 실습하기 ] 파일내용검색 - grep 실습하기 데이터파일 : g.txt :w UNIX 12345 unix+ 123 system admin Network 5 root other sh sjyoun prof ksh jongwon prof KSH ROOT other csh ck07555 student ksh CK08777 student bash 주의! 패턴을작은따옴표 로꼭감싸야함! 1)grep ^root g.txt 2)grep sh g.txt 3)grep r..t g.txt 4)grep oo* g.txt 5)grep [0-9].* g.txt 6)grep [^c]sh g.txt 결과를예측해봅시다 14
파일내용검색 - egrep egrep [ 옵션 ] 패턴파일명들 extended regular expression 을사용하는 grep 명령 확장된패턴표현식 메타 문자 의미예결과 + 앞의글자가하나이상나온다. [a-z]+ark airpark, dark, bark, shark x y x 나 y 중하나가나온다 apple orange apple 또는 orange ( ) 문자열그룹 (1 2)+ search(es ing)+ 1 또는 2 가하나이상 searches 또는 searching 15
파일내용검색 - egrep grep 명령사용예제 기본데이터 (g.dat) UNIX 12345 unix+ 123 system admin Network 5 root other sh sjyoun prof ksh jongwon prof KSH ROOT other csh ck07555 student ksh CK08777 student bash 1) + egrep [78]+ g.dat ck07555 student ksh CK08777 student bash 2) x y egrep csh bash g.dat ROOT other csh CK08777 student bash 16
[ 실습하기 ] 파일내용검색 - grep 실습하기 데이터파일 : eh.txt root sh user05567 ROOT csh user05777 root ksh user05666 ROOT ksh user05888 1) egrep root ROOT eh.txt 2) egrep (root ROOT) ksh eh.txt 3)egrep [56]+ eh.txt 4)egrep csh bash eh.txt 5)egrep [a-z]+body /etc/passswd 결과를예측해봅시다 17
파일내용검색 - fgrep fgrep [ 옵션 ] 문자열파일명들 문자열검색 문자열내의모든문자를일반문자로해석 정규표현식사용안함 모든정규표현식특수문자를문자그대로검색 * : 문자 * 로인식하여검색 18
파일내용검색 - fgrep fgrep 명령사용예제 기본데이터 (fg.dat) # fgrep data file # JAVA 2244 aix admin * Unix admin * Network 25 1) * 검색 fgrep * fg.dat * Unix admin * Network 25 2) # 검색 fgrep # fg.dat # fgrep data file # 19
파일내용검색 - grep 과파이프 grep 명령은파이프와함께자주사용됨 ls -l grep rw- -rw-r--r-- 1 user1 -rw-r--r-- 1 user1 other 50 4월30일 12:00 g.dat other 50 4월30일 12:00 g.dat ps -ef grep user1 user1 6683 6680 0 17:28:15 pts/1 0:00 -ksh user1 6720 6683 0 17:50:53 pts/1 0:00 -ksh 20
grep 응용과제 (1) 다음 datafile 을이용하여 northwest NW Charles Main 3.0.98 3 34 western WE Sharon Gray 5.3.97 5 23 southwest SW Lewis Dalsase 2.7.8 2 18 southern SO Suan Chin 5.1.95 4 15 southeast SE Patrick Hemenway 4.0.7 4 17 eastern EA TB Savage 4.4.84 5 20 northeast NE AM Main Jt. 5.1.94 3 13 north NO Margot Weber 4.5.89 5 9 central CT Ann Stephens 5.7.94 5 13 1. NW가포함된모든줄찾기 2. n으로시작하는모든줄찾기 3. 4로끝나는모든줄찾기 4. TB Savage가포함된모든줄찾기 21
grep 응용과제 (2) 5. 숫자 5 와소수점이포함된모든줄찾기 6..5 가포함된모든줄찾기 7. w 나 e 로시작하는모든줄찾기 8. north 로시작하는단어가포함된모든줄찾기 9. south 로시작하는단어가포함되지않은모든줄찾기 10. 대소문자구별없이 so 로시작하는모든줄의줄번호와찾은패턴보이기 11. east 로시작하는단어가포함된줄수출력하기 12. 단어자체가 north 인패턴이포함된모든줄찾기 (northwest 는불포함 ) 22
GNU grep Gnu grep 은 G, -E, -F, -P 사용가능 grep G : 기본 grep grep E 또는 egrep grep F 또는 fgrep 재귀 grep (rgrep 또는 grep R) grep P (Perl 정규표현식지원 ) 23