Download presentation
Presentation is loading. Please wait.
Published by주랑 애 Modified 8년 전
1
11 장. 유닉스 유틸리티 이용하기
2
Contents 학습목표 유닉스 시스템이 제공하는 다양한 유틸리티의 사용방법을 익힌 다 파일의 행수, 단어수, 문자수를 찾는 방법을 익힌다 파일을 정렬하고 내용의 중복을 제거하는 방법을 익힌다. 파일을 분할하거나 원하는 부분을 잘라 붙이는 방법을 익힌다 내용 파일 정보수집 : wc 파일 정렬 : sort 파일 분할 : split 중복 삭제 : uniq 필드 잘라내기 : cut 두 파일 연결하기 : paste 파일 덤프 : dd 학습목표 유닉스 시스템이 제공하는 다양한 유틸리티의 사용방법을 익힌 다 파일의 행수, 단어수, 문자수를 찾는 방법을 익힌다 파일을 정렬하고 내용의 중복을 제거하는 방법을 익힌다. 파일을 분할하거나 원하는 부분을 잘라 붙이는 방법을 익힌다 내용 파일 정보수집 : wc 파일 정렬 : sort 파일 분할 : split 중복 삭제 : uniq 필드 잘라내기 : cut 두 파일 연결하기 : paste 파일 덤프 : dd
3
IT CookBook, 유닉스 이론과 실습 33 01. 파일 정보 수집 - wc 파일의 라인수, 단어수, 문자수 출력 옵션 -c : 바이트 수 -m : 문자수 -C : -m 과 동일 -l : 라인 수 -w : 화이트 스페이스나 새로운 행으로 구분된 단어수 wc [ 옵션 ] 파일명
4
IT CookBook, 유닉스 이론과 실습 44 파일 정보 수집 - wc 사용 예 텔넷 cookook.co.kr $ ls -l ~ total 22 drwxr-xr-x 2 user1 staff 2 Aug 10 01:10 Backup/ -rw------- 1 user1 staff 350 May 18 00:58 dead.letter -rw-r--r-- 1 user1 staff 165 Aug 10 01:28 local.cshrc -rw-r--r-- 1 user1 staff 170 Aug 10 01:33 local.login -rw-r--r-- 1 user1 staff 130 Apr 12 19:14 local.profile... $ ls -l > test_wc $ 텔넷 cookook.co.kr $ wc -c test_wc 70 test_wc $
5
IT CookBook, 유닉스 이론과 실습 55 [ 실습하기 ] 파일 정보 수집 - wc 1)wc /etc/passwd 2)wc /etc/hosts 3)wc -l /etc/services 4)cat /etc/hosts | wc -l 5)ls –l /usr/bin | wc –l 6)??? 1)/etc/passwd 파일의 정보를 확인 2)/etc/hosts 파일의 정보 확인 3)/etc/services 파일의 라인 수 확 인 4)/etc/hosts 파일의 라인수를 확인 하는 다른 방법 5)/usr/bin 디렉토리 파일의 라인 수 가 의미하는 것은 무엇인가 ? 6) 현재 디렉토리에 파일이 몇개 있 는지 알려면 어떻게 해야 하는가 ?
6
IT CookBook, 유닉스 이론과 실습 66 02. 파일 정렬 - sort 텍스트 파일의 내용을 지정한 방법으로 정렬하여 화면에 출력 정렬기준 ①환경변수 LC_COLLATE ②환경변수 LANG (LC_COLLATE 가 없으면 ) 유니코드 : 공백 -> 특수문자 -> 숫자 -> 영문자 아스키코드 : 공백 -> 숫자 -> 영문소문자 -> 영문대문자, 특수문자는 사이사이 옵션 sort [ 옵션 ] 파일명 옵션기능옵션기능 -b 앞에 붙는 공백을 무시 -r 역순으로 정렬 -c 정렬이 되지 않은 상태로 출력 -u 중복행 삭제 -d 사전순으로 정렬 -o 파일명정렬된 결과를 파일에 저장 -f 대소문자 구분 안함 -t 문자지정한 문자를 필드 구분자로 사용 -k # # 필드 기준으로 정렬 + 번호번호 +1 필드를 기준으로 정렬 -m 정렬된 파일 통합 +pos1 -pos2 정렬하고자 하는 필드를 지정. pos1 열부터 pos2 열까지 정렬 -n 숫자를 산술값으로 환산
7
IT CookBook, 유닉스 이론과 실습 77 파일 정렬 - sort 사용 예 기본 데이터 (test_sort1) 기본 정렬 : 아스키코드 기준 텔넷 cookook.co.kr $ sort test_sort1 700 abcd !abc #include &987 1234 50 @_@ This is a test file. Unix ^love _love `love` hi love unix {Love ~love This is a test file. 1234 unix Unix _love ~love !abc 700 50 @_@ #include love ^love `love` hi &987 abcd {Love 숫자보다 먼저 나오는 특수문자들 숫자들 숫자와 대문자 사이에 나오는 특수문자들 대문자들 대문자와 소문자 사이에 나오는 특수문자들 소문자들 소문자 다음에 나오는 특수문자들
8
IT CookBook, 유닉스 이론과 실습 88 파일 정렬 - sort 사전식으로 정렬 : -d 역순으로 정렬 : -r 텔넷 cookook.co.kr $ sort test_sort1 ~love {Love unix love hi `love` _love ^love Unix This is a test file. @_@ 50 1234 &987 #include !abc abcd 700 $ 텔넷 cookook.co.kr $ sort test_sort1 @_@ 700 abcd 1234 50 &987 {Love This is a test file. Unix !abc hi #include ^love _love `love` love ~love unix $ 첫문자가 공백문자 & 는 무시하고 987 로 간주 ! 는 무시 앞의 특수문자들 무시 공백행들 { 는 무시하고 Love 로 간주 기본 정렬의 역순
9
IT CookBook, 유닉스 이론과 실습 99 파일 정렬 - sort 기본 데이터 : test_sort2 필드 정렬하기 : + 번호 또는 -k 001 Hong Gil-Dong 80 M 002 Park Ji-Soo 100 M 003 Lee Na-Young 54 F 004 Kim Chan-Sook 60 F 005 Han Ju-Hyun 75 M 006 Jyun Doo-Ri 49 F 007 Lee Mi-Ra 59 F 텔넷 cookook.co.kr $ sort -k 2 test_sort2 005 Han Ju-Hyun 75 M 001 Hong Gil-Dong 80 M 006 Jyun Doo-Ri 49 F 004 Kim Chan-Sook 60 F 007 Lee Mi-Ra 59 F 003 Lee Na-Young 54 F 002 Park Ji-Soo 100 M $ 텔넷 cookook.co.kr $ sort +1 test_sort2 005 Han Ju-Hyun 75 M 001 Hong Gil-Dong 80 M 006 Jyun Doo-Ri 49 F 004 Kim Chan-Sook 60 F 007 Lee Mi-Ra 59 F 003 Lee Na-Young 54 F 002 Park Ji-Soo 100 M $ 두번째 필드 기준
10
IT CookBook, 유닉스 이론과 실습 10 파일 정렬 - sort +pos1 -pos2 숫자 처리 : -n 텔넷 cookook.co.kr $ sort -n -k 4 test_sort2 006 Jyun Doo-Ri 49 F 003 Lee Na-Young 54 F 007 Lee Mi-Ra 59 F 004 Kim Chan-Sook 60 F 005 Han Ju-Hyun 75 M 001 Hong Gil-Dong 80 M 002 Park Ji-Soo 100 M $ 텔넷 cookook.co.kr $ sort +1 -2 test_sort2 005 Han Ju-Hyun 75 M 001 Hong Gil-Dong 80 M 006 Jyun Doo-Ri 49 F 004 Kim Chan-Sook 60 F 003 Lee Na-Young 54 F 007 Lee Mi-Ra 59 F 002 Park Ji-Soo 100 M $ 텔넷 cookook.co.kr $ sort -k 4 test_sort2 002 Park Ji-Soo 100 M 006 Jyun Doo-Ri 49 F 003 Lee Na-Young 54 F 007 Lee Mi-Ra 59 F 004 Kim Chan-Sook 60 F 005 Han Ju-Hyun 75 M 001 Hong Gil-Dong 80 M $
11
IT CookBook, 유닉스 이론과 실습 11 파일 정렬 - sort 2 차 정렬 정렬 결과 저장 : -o 텔넷 cookook.co.kr $ sort +2 -3 +1 -2 test_sort2 004 Kim Chan-Sook 60 F 006 Jyun Doo-Ri 49 F 001 Hong Gil-Dong 80 M 005 Han Ju-Hyun 75 M 002 Park Ji-Soo 100 M 007 Lee Mi-Ra 59 F 003 Lee Na-Young 54 F $ 텔넷 cookook.co.kr $ sort -n +3 -4 -o sort.out test_sort2 $ cat sort.out 006 Jyun Doo-Ri 49 F 003 Lee Na-Young 54 F 007 Lee Mi-Ra 59 F 004 Kim Chan-Sook 60 F 005 Han Ju-Hyun 75 M 001 Hong Gil-Dong 80 M 002 Park Ji-Soo 100 M $ 3 번 필드만을 기준으로 정렬 3 열이 같으면 2 열을 기준으로 정렬
12
IT CookBook, 유닉스 이론과 실습 12 파일 정렬 - sort 필드 구분자 지정하기 : -t 텔넷 cookook.co.kr $ sort -t: /etc/passwd adm:x:4:4:Admin:/var/adm: aiuser:x:60003:60001:AI User:/: bin:x:2:2::/usr/bin: daemon:x:1:1::/: dhcpserv:x:18:65:DHCP Configuration Admin:/: dladm:x:15:65:Datalink Admin:/: ftp:x:21:21:FTPD Reserved UID:/: ( 중략 ) user1:x:60005:10::/home/user1:/usr/bin/bash user2:x:60006:10::/home/user2:/usr/bin/bash uucp:x:5:5:uucp Admin:/usr/lib/uucp: webservd:x:80:80:WebServer Reserved UID:/: xvm:x:60:60:xVM User:/: zfssnap:x:51:12:ZFS Automatic Snapshots Reserved UID:/:/usr/bin/pfsh $
13
IT CookBook, 유닉스 이론과 실습 13 [ 실습하기 ] 파일 정렬 - sort 1)mkdir Unix/ch11 2)cd Unix/ch11 3)cp /tmp/s.dat. 4)cat s.dat 5)sort s.dat 6)sort –f s.dat 7)sort –r s.dat 8)sort +2 s.dat 9)sort –o sort.out s.dat 10) cat sort.out 11) sort +2 +3 s.dat 12) sort +m s.dat sort.out 1) 2) 3) 실습 데이터 파일을 현재 디렉토리로 복사 4) 기본 파일 내용을 확인 5) 기본 정렬 6) 대소문자 구분없이 정렬 7) 역순으로 정렬 8)3 번째 열을 기준으로 정렬 9) 정렬결과를 파일로 저장 10) 결과파일을 확인 11)3, 4 번째 열을 기준으로 정렬 12) 기본 파일과 정렬파일을 합병
14
IT CookBook, 유닉스 이론과 실습 14 03. 파일 분할 - split 큰 파일을 일정한 크기의 여러 개 작은 파일로 분할 분할된 파일 이름은 xaa, xab, … 순으로 생성 옵션 -b n : 크기가 n 바이트인 파일로 분할 -n : n 줄씩 분할 옵션을 지정하지 않으면 1000 줄씩 분할 파일을 지정하지 않으면 표준입력내용을 분할 저장 split [ 옵션 ] [ 파일명 ]
15
IT CookBook, 유닉스 이론과 실습 15 파일 분할 - split 사용 예 기본 데이터 : test_split 행을 기준으로 파일 분할 바이트를 기준으로 파일 분할 텔넷 cookook.co.kr $ cp /etc/services test_split $ wc -l test_split 134 test_split $ 텔넷 cookook.co.kr $ split -30 test_split $ ls test_split1 xaa xab xac xad xae $ wc -l x* 30 xaa 30 xab 30 xac 30 xad 14 xae 134 total $ 텔넷 cookook.co.kr $ wc -c test_split 4543 test_split $ split -b 512 test_split $ ls test_split xaa xab xac xad xae xaf xag xah xai $ wc -c x* 512 xaa 512 xab 512 xac 512 xad 512 xae 512 xaf 512 xag 512 xah 447 xai 4543 total $
16
IT CookBook, 유닉스 이론과 실습 16 04. 중복 삭제 - uniq 파일 또는 표준입력으로 입력된 내용 중 중복된 내용의 줄이 연속으로 있으면 하나만 남기고 삭제 파일을 지정하지 않으면 표준입력내용을 처리 입출력 파일 이름은 달라야 함 옵션 -u : 중복되지 않는 줄만 출력 -d : 중복된 줄 중 1 줄만 출력 -n : 원하는 필드 앞의 공백과 문자열 무시. n 은 필드 번호 uniq [ 옵션 ] [ 입력파일 [ 출력파일 ] ]
17
IT CookBook, 유닉스 이론과 실습 17 중복 삭제 - uniq 사용 예 기본 데이터 : test_uniq1 중복 제거 aaaaa abcde bbbbb abcde bbbbb abcde ccc 텔넷 cookook.co.kr $ uniq test_uniq1 aaaaa abcde bbbbb abcde bbbbb abcde ccc $
18
IT CookBook, 유닉스 이론과 실습 18 중복 삭제 - uniq 정렬과 중복 제거를 동시에 중복 없는 행보기 중복 행과 중복 횟수 보기 텔넷 cookook.co.kr $ uniq –u test_uniq1 aaaaa ccc $ 텔넷 cookook.co.kr $ uniq –d test_uniq1 abcde bbbbb $ uniq –c test_uniq1 1 aaaaa 4 abcde 3 bbbbb 1 ccc $ 텔넷 cookook.co.kr $ sort test_uniq1 aaaaa abcde bbbbb ccc $ sort test_uniq1 | uniq aaaaa abcde bbbbb ccc $
19
IT CookBook, 유닉스 이론과 실습 19 05. 필드 잘라내기 - cut 파일의 각 행에서 선택된 필드를 잘라냄 옵션 -c 리스트 : 각 줄에서 잘라낼 문자 위치 지정 -f 필드수 : 지정한 필드 잘라냄 -d 문자 : 필드 구분자 cut [ 옵션 ] [ 파일명 ]
20
IT CookBook, 유닉스 이론과 실습 20 필드 잘라내기 - cut 사용 예 기본 데이터 : test_cut 문자 추출 : -c, 필드추출 : -f 001 Hong Gil-Dong 80 M 002 Park Ji-Soo 100 M 003 Lee Na-Young 54 F 004 Kim Chan-Sook 60 F 005 Han Ju-Hyun 75 M 006 Jyun Doo-Ri 49 F 007 Lee Mi-Ra 59 F 텔넷 cookook.co.kr $ cut –c5-8 test_cut Hong Park Lee Kim Han Jyun Lee $ 텔넷 cookook.co.kr $ cut -f 2,3 test_cut Hong Gil-Dong Park Ji-Soo Lee Na-Young Kim Chan-Sook Han Ju-Hyun Jyun Doo-Ri Lee Mi-Ra $
21
IT CookBook, 유닉스 이론과 실습 21 필드 잘라내기 - cut 필드 구분자 지정하기 : -d 텔넷 cookook.co.kr $ cut -d: -f 1 /etc/passwd | more root daemon bin sys adm lp smtp uucp listen nobody noaccess nobody4 mysql ( 중략 ) -- 계속 -- 텔넷 cookook.co.kr $ cut -d' ' -f 2 test_sort2 Hong Park Lee Kim Han Jyun Lee $
22
IT CookBook, 유닉스 이론과 실습 22 [ 실습하기 ] 필드 잘라내고 중복삭제 -uniq, cut 1)cp /etc/passwd. 2)cut -d: -f 7 passwd > shell.out 3)more shell.out 4)sort shell.out | uniq 1)/etc/passwd 파일을 현재 디렉토리로 복사 2)passwd 파일중 필드 구분자를 : 로 지 정하여 7 번째 필드를 추출하여 shell.out 파일로 저장 3) 저장한 파일 내용 확인 4)shell.out 파일 내용을 정렬한 후 중복 제거 => 위 작업의 결과로 알 수 있는 것은 ?
23
IT CookBook, 유닉스 이론과 실습 23 06. 두 파일 연결하기 - paste 지정한 파일의 내용을 붙임 사용자가 지정한 두 개 이상의 파일 내용 중 같은 줄을 붙이거 나 한 파일의 끝에 다른 파일의 내용을 추가 옵션 -s : 파일의 끝에 추가 (split 로 나눈 파일을 원래대로 붙일 때 ) -d 문자 : 필드 구분자 - : 파일 대신 표준 입력 사용 paste [ 옵션 ] [ 파일 1 파일 2... ]
24
IT CookBook, 유닉스 이론과 실습 24 두 파일 연결하기 - paste 사용 예 test_paste1 test_paste2 파일 붙이기 001 002 003 004 005 006 007 Hong Gil-Dong Park Ji-Soo Lee Na-Young Kim Chan-Sook Han Ju-Hyun Jyun Doo-Ri Lee Mi-Ra 텔넷 cookook.co.kr $ paste test_paste2 test_paste1 Hong Gil-Dong 001 Park Ji-Soo 002 Lee Na-Young 003 Kim Chan-Sook 004 Han Ju-Hyun 005 Jyun Doo-Ri 006 Lee Mi-Ra 007 $
25
IT CookBook, 유닉스 이론과 실습 25 두 파일 연결하기 - paste 두 파일의 행이 같지 않을 경 우 test_paste3 필드 구분자 지정 : -d 파일 수평 붙이기 : -s 001 002 003 004 005 006 007 텔넷 cookook.co.kr $ paste -d: test_paste1 test_ paste2 001:Hong Gil-Dong 002:Park Ji-Soo 003:Lee Na-Young 004:Kim Chan-Sook 005:Han Ju-Hyun 006:Jyun Doo-Ri 007:Lee Mi-Ra $ 텔넷 cookook.co.kr $ paste test_paste2 test_paste3 Hong Gil-Dong 001 002 003 004 Park Ji-Soo 005 006 007 Lee Na-Young Kim Chan-Sook Han Ju-Hyun Jyun Doo-Ri Lee Mi-Ra $ 텔넷 cookook.co.kr $ paste -s test_paste1 test_paste2 001 002 003 004 005 006 007 Hong Gil-Dong Park Ji-Soo Lee Na-Young Kim Chan-Sook Han Ju-Hyun Jyun Doo-Ri Lee Mi-Ra $
26
IT CookBook, 유닉스 이론과 실습 26 두 파일 연결하기 - paste cut 과 paste 의 복합 사용 s.dat u.dat Kim Ji-Soo 10 F Lee Gil-Dong 20 M Lee Gil-San 15 M Park Ji-Soo 21 F Choi Na-Na 20 F aaaaa abcde bbbbb 텔넷 cookook.co.kr $ cut –d’ ‘ -f1 s.dat | paste - u.dat Kim aaaaa Lee abcde Park bbbbb Choi $
27
IT CookBook, 유닉스 이론과 실습 27 [ 실습하기 ] 파일 연결하기 - paste 1)more /etc/passwd 2)cut –f 1 –d: /etc/passwd > login_list 3)cut –f 5 –d: /etc/passwd > name_list 4)paste –d: name_list login_list > user_list 5)sort –o user_list user_list 1)/etc/passwd 파일 구조 파악 2) 첫번째 필드인 로그인 ID 추출 3) 사용자 이름 추출 (5 번째 필드 ) 4) 파일 합치기 5) 정렬
28
IT CookBook, 유닉스 이론과 실습 28 07. 파일 덤프 - dd 지정한 입력 파일을 지정한 옵션에 따라 변환하여 출력파일 로 저장 옵션 bs=n : 입출력 블록의 크기를 n 바이트로 지정 ( 기본 1 블록 =512 바이트 ) conv=lcase : 알파벳을 소문자로 변환 conv=ucase : 알파벳을 대문자로 변환 dd [ 옵션 ] [ if= 입력파일 ] [ of= 출력파일 ]
29
IT CookBook, 유닉스 이론과 실습 29 파일 덤프 - dd 사용 예 : 대소문자 전환하기 텔넷 cookook.co.kr $ dd conv=lcase if=test_cut of=test_dd1 0+1 레코드 인 : 0+1 레코드 아웃 $ more test_dd1 001 hong gil-dong 80 m 002 park ji-soo 100 m 003 lee na-young 54 f 004 kim chan-sook 60 f 005 han ju-hyun 75 m 006 jyun doo-ri 49 f 007 lee mi-ra 59 f $
30
IT CookBook, 유닉스 이론과 실습 30 파일 덤프 - dd 파일 지우기 텔넷 cookook.co.kr $ dd if=/dev/null of=test_dd2 0+0 레코드 인 : 0+0 레코드 아웃 $ more test_dd2 $ ls test_dd2 test_dd2 $
31
IT CookBook, 유닉스 이론과 실습 31 11 장 요약 [1/2] 파일의 정보수집 wc : 파일의 크기를 다양하게 보여주는 명령으로 파일의 행수, 단어 수, 문자수, 바이트 수를 알려준다 파일 정렬 기본 정렬 : sort test_sort 특정 필드를 기준으로 정렬 : sort -f 2 test_sort 숫자를 기준으로 정렬 : sort -n -k 2 test_sort 파일에서 정보 추출 split : 크기가 큰 파일을 작은 파일로 일정하게 나눔. 파일 이름은 xaa, xab,... 순으로 지정 split -30 test_split (30 행씩 분할 ) uniq : 중복된 파일 내용 삭제. sort 와 함께 사용하면 더욱 효과가 좋음 sort test_uniq | uniq cut : 특정 필드만 잘라냄 cut -f 2 test_cut
32
IT CookBook, 유닉스 이론과 실습 32 11 장 요약 [2/2] 파일의 연결 필드 붙이기 : paste test_paste1 test_paste2 수평 붙이기 : paste -s test_paste1 test_paste2 파일 내용 변환 파일 변환 : dd if=mypc.txt of=test_dd1 conv=ascii 파일 내용 삭제 : dd if=/dev/null of=test_dd2 file1file2 file1 file2
33
Q & A
Similar presentations