제 5 장 유틸리티 창병모 2012.09 1. 5.1 파일 관련 유틸리티 2 필터링 : grep 명령어 $ grep 패턴 파일 *  대상 파일들을 읽어서, 해당 패턴을 검색하고, 패턴을 포함하는 줄을 출력 $ grep with you.txt Until you come.

Slides:



Advertisements
Similar presentations
Python Ch.06 RaspberryPi Sejin Oh. Raspberry Pi Python  IDLE(Integrated Development Environment)  라즈베리 파이 배포본들은 일반적으로 파이썬과 파이썬 3 의 IDLE 파 이썬 개발 도구를.
Advertisements

1/37 한글에는 전문적인 문서 편집을 위한 고급 기능이 있다. 문서를 편리하게 수 정할 수 있도록 도와주는 찾기 / 찾아 바꾸기, 다른 위치로 이동할 수 있는 책 갈피와 하이퍼링크에 대해 알아보자. 그리고 자주 사용하는 서식을 미리 정 해 놓고 쓰는 스타일 활용법과 스타일이.
SPARCS 12 yumgyun. 이런게 아닙니다  vim -> vi improve!  유닉스 계열에서 전통적으로 널리 사용도던 vi 의 improve 즉 undo, syntax coloring, split windows 등의 기능을 포함시킨 vi 의 보강된.
3장 파일 및 디렉토리 조작 정보보호 연구실 김동민.
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
grep -hnlvwi patten {filename}
cafe.naver.com/embeddedcrazyboys
리눅스 기본 명령어 및 Vi 명령어 정리 2015/1, 컴퓨터의 개념 및 실습.
Windows Server 장. 사고를 대비한 데이터 백업.
Linux/UNIX Programming
임베디드 시스템 개론 크로스 플랫폼 설치 2일차 강의 자료 Embedded System Lab.
Root Filesystem Porting
Root Filesystem Porting
Linux Master 김희승 임승한 OneScore 임승한.
메시지 큐[5] – test1.c 메시지 제어: msgctl(2) #include <sys/msg.h>
Bat 파일을 이용한 로그 파일 관리.
Homework #5 (1/3) 다음을 수행한 후, 결과 파일들을 출력하여 제출한다.
2007 1학기 11 프로젝트 기초 실습.
Cross Compiler를이용한 커널 컴파일 및 포팅
어서와 C언어는 처음이지 제14장.
Linux/UNIX Programming
솔라리스10 3장. 솔라리스 패키지 관리.
㈜시스원이 제공하는 시스템 관리 통합 솔루션 SysmanagerOne Agent설치 안내서
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
뇌를 자극하는 Windows Server 2012 R2
24장. 파일 입출력.
Linux/UNIX Programming
UNIX Unbounded A Beginning Approach
UNIX Unbounded A Beginning Approach
학기 C/C++ 프로그래밍 실습 1주차.
화면 갈무리 및 파일 권한 설정.
UNIX 편집기의 운영 방식 vi편집기 사용법 연습 문제
1. 스크립트 작성 마법사 2. NSIS 스크립트 컴파일
Internet Protocol and Programming
빌드 성공.
Linux/UNIX Programming
Linux/UNIX Programming
Kernel, Ramdisk, JFFS2 Porting
단축키 기능 1. 단축키 기능 설명 Alt + R 조회 S 저장 I 삽입 A 추가 D 삭제 P 출력 Q 닫기
소리 편집 안 재 형.
1-4.
주 예수 내가 알기 전 주 예수내가 알기전날 먼저사랑했네 그 크신사랑- 나타나내 영혼거듭났네 1-6.
1-6.
아무것도 두려워 말라 아무것도두려워말라주나의하나님이지켜주시네 놀라지마라겁내지마라주님나를지켜주시네 1-4.
Internet Protocol and Programming
시스템 인터페이스 Lab#5 쉡 실습.
DA :: 퀵 정렬 Quick Sort 퀵 정렬은 비교방식의 정렬 중 가장 빠른 정렬방법이다.
05. General Linear List – Homework
Linux 9.X 기초에서 활용까지 Chapter 06 VI 편집기.
 파일 아카이브와 압축 명령 익히기.
Homework #5 (1/3) 다음을 수행한 후, 결과 파일들을 출력하여 제출한다.
Linux 기본 사용법.
Chapter 10 데이터 검색1.
시스템 인터페이스 Lab1 X-window 및 명령어 사용.
Homework #3 (1/3) 다음을 수행한 후, 결과 파일들을 출력하여 제출한다.
TVM ver 최종보고서
4. 셸을 이용한 명령어 입력. Unix 시스템 쉘 간단한 셸 명령 명령 매개변수(Command arguments)
Internet Protocol and Programming
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
Microsoft Word 2002 제1장 문자열의 삽입과 변경.
vi editor 2 번째주 Dept. of Computer Science & Engineering
 6장. SQL 쿼리.
Docker Study 6~7.
운영체제보안 SELinux 실습 박민재
7 생성자 함수.
Linux/UNIX Programming
시스템 해킹과 보안 permission과 SetUID.
Linux/UNIX Programming
SPL-Duino 블록 편집기 이용하기 전류센서 블록 만들기 SPL-Duino 블록 편집기를 실행합니다.
Presentation transcript:

제 5 장 유틸리티 창병모

5.1 파일 관련 유틸리티 2

필터링 : grep 명령어 $ grep 패턴 파일 *  대상 파일들을 읽어서, 해당 패턴을 검색하고, 패턴을 포함하는 줄을 출력 $ grep with you.txt Until you come and sit awhile with me There is no life - no life without its hunger; But when you come and I am filled with wonder, $grep -w with you.txt Until you come and sit awhile with me But when you come and I am filled with wonder, $grep -n with you.txt 4:Until you come and sit awhile with me 15:There is no life - no life without its hunger; 17:But when you come and I am filled with wonder, 3

grep 명령어 $grep -i when you.txt When I am down and, oh my soul, so weary When troubles come and my heart burdened be I am strong, when I am on your shoulders But when you come and I am filled with wonder, $grep -v raise you.txt When I am down and, oh my soul, so weary When troubles come and my heart burdened be Then, I am still and wait here in the silence Until you come and sit awhile with me I am strong, when I am on your shoulders There is no life - no life without its hunger; Each restless heart beats so imperfectly; But when you come and I am filled with wonder, Sometimes, I think I glimpse eternity 4

정규표현식 (regular expression) 정규표현식을 이용한 패턴 기술 . : 임의의 한 문자  * : 0 개 이상 예 ) a*b 는 b, ab, aab, aaab,...  [ ] : [ 과 ] 사이의 문자 중 하나  [^...] : [^ 과 ] 사이의 문자를 제외한 나머지 문자 중 하나  ^, $ : 각각 줄의 시작과 끝을 의미한다. $ grep -w 'st.*' you.txt Then, I am still and wait here in the silence You raise me up, so I can stand on mountains You raise me up, to walk on stormy seas I am strong, when I am on your shoulders $ grep -w 'w.*t' you.txt Then, I am still and wait here in the silence There is no life - no life without its hunger; 5

정렬 : sort 명령어 sort 명령어  텍스트 파일을 정렬 필드를 기준으로 줄 단위로 오름차순 정렬  -r 옵션을 사용하여 내림차순으로 정렬  정렬 필드 지정 형식 : + 시작필드 - 종료필드 $ sort [- 옵션 ] 파일 * 6

정렬 예 1 $ sort you.txt But when you come and I am filled with wonder, Each restless heart beats so imperfectly; I am strong, when I am on your shoulders Sometimes, I think I glimpse eternity Then, I am still and wait here in the silence There is no life - no life without its hunger; Until you come and sit awhile with me When I am down and, oh my soul, so weary When troubles come and my heart burdened be You raise me up, so I can stand on mountains You raise me up, to more than I can be You raise me up, to walk on stormy seas 7

정렬 예 2 $ sort you.txt Then, I am still and wait here in the silence When I am down and, oh my soul, so weary Until you come and sit awhile with me When troubles come and my heart burdened be Each restless heart beats so imperfectly; You raise me up, so I can stand on mountains You raise me up, to more than I can be You raise me up, to walk on stormy seas There is no life - no life without its hunger; I am strong, when I am on your shoulders Sometimes, I think I glimpse eternity But when you come and I am filled with wonder, 8

파일 자르기 : split 명령어 하나의 파일을 일정한 크기의 여러 개 작은 파일로 분할 $ split [- 옵션 ] 입력파일 [ 출력파일 ] 1000 줄씩 분할하여 xaa, xab,... 형태의 파일명으로 저장 -l n 옵션 : 분할할 줄 수를 지정 예 $ split -l 10 you.txt $ ls -l -rw-r--r-- 1 chang faculty 월 16 일 14:36 xaa -rw-r--r-- 1 chang faculty 월 16 일 14:36 xab -rw-r--r-- 1 chang faculty 월 15 일 19:33 you.txt 9

파일 비교 : cmp 명령어 $ cmp 파일 1 파일 2  두 파일이 같은지 비교한다.  두 파일이 같으면 아무 것도 출력하지 않음.  두 파일이 서로 다르면 서로 달라지는 위치 출력 $ cmp you.txt me.txt you.txt me.txt 다름 : 340 자, 10 행 10

diff 명령어 $ diff 파일 1 파일 2  두 파일을 줄 단위로 비교하여 그 차이를 출력  -i 옵션은 대소문자를 무시하여 비교  출력은 첫 번째 파일을 두 번째 파일 내용과 같도록 바꿀 수 있는 편 집 명령어 형태 $ diff you.txt me.txt 9a10,13 > > You raise me up, so I can stand on mountains > You raise me up, to walk on stormy seas > I am strong, when I am on your shoulders 11

diff 출력 : 편집 명령어 추가 (a) 첫 번째 파일의 줄 n1 이후에 두 번째 파일의 n3 부터 n4 까지의 줄들을 추가 n1 a n3,n4 > 추가할 두 번째 파일의 줄들 삭제 (d) 첫 번째 파일의 n1 부터 n2 까지의 줄들을 삭제하면 두 번째 파일의 줄 n3 이후와 서 로 같다. n1,n2 d n3 < 삭제할 첫 번째 파일의 줄들 변경 (c) 첫 번째 파일의 n1 부터 n2 까지의 줄들을 두 번째 파일의 n3 부터 n4 까지의 줄들로 대치하면 두 파일은 서로 같다. n1,n2 c n3,n4 < 첫 번째 파일의 대치될 줄들 -- > 두 번째 파일의 대치할 줄들 12

링크 기존의 파일에 또 하나의 새로운 이름 혹은 경로  하드 링크  심볼릭 링크 (-s 옵션 ) $ ln [-s] 파일 1 [ 파일 2] $ ln [-s] 파일 + 디렉터리 하드 링크 (hard link) $ ln hello.txt hi.txt $ ls -l -rw chang faculty 월 7 일 15:31 hello.txt -rw chang faculty 월 7 일 15:31 hi.txt 13

심볼릭 링크 (symbolic link) 심볼릭 링크  다른 파일을 가리키고 있는 별개의 파일이다.  원래 파일의 위치에 대한 정보가 들어 있어서,  심볼릭 링크를 참조하면, 가리키고 있는 파일을 대신 참조 $ ln -s hello.txt hi.txt $ ls -l -rw chang faculty 월 7 일 15:31 hello.txt lrwxrwxrwx 1 chang faculty 9 1 월 24 일 12:56 hi.txt -> hello.txt 14

파일 찾기 : find 명령어 find 명령어  옵션의 검색 조건에 따라 대 상 디렉터리 밑에서 해당되 는 파일을 모두 찾아 출력한  $ find 디렉터리 [- 옵션 ] 검색 조건 및 처리 방법설명 -name 파일파일 이름으로 찾는다. -atime +n 접근 시간이 n 일 이전인 파일을 찾는다. -atime -n 접근 시간이 n 일 이내인 파일을 찾는다. -mtime +n n 일 이전에 변경된 파일을 찾는다. -mtime -n n 일 이내에 변경된 파일을 찾는다. -perm nnn 파일 권한이 nnn 인 파일을 찾는다. -type x 파일 타입이 x 인 파일들을 찾는다. -size n 사이즈가 n 이상인 파일들을 찾는다. -links n 링크된 개수가 n 인 파일들을 찾는다. -user 사용자이름사용자이름으로 찾는다. -group 그룹이름그룹이름으로 찾는다. -print 찾은 파일의 절대 경로명을 화면에 출력한다. -exec cmd {}; 찾은 파일들에 대해 cmd 명령어를 실행한다. 15

find 명령어 예 $ find /usr -name *.c -print /usr 밑에.c 파일들을 찾아 경로명 출력 $ find. -name ping –ls 이름이 ping 인 파일을 찾아 ls 명령어 수행 $ find. -type d -print 디렉터리 (d) 파일을 찾아 경로명을 출력 $ find. -perm 700 -ls 사용권한 700 인 파일 찾아 ls 명령어 수행 $ find. -size print 1024 블럭 이상인 파일을 찾아 출력 $ find. -name core -size –ls 파일 이름이 core 이고 크기가 2048 블럭 이상인 파일을 찾아 ls 명령어 수행 $ find. -user chang -print 파일 소유자가 chang 인 파일을 찾아 출력 $ find. -atime +30 -print 30 일 이전에 접근되었던 파일을 찾아 출력 $ find. -mtime -7 -print 7 일 이내에 수정된 적이 있는 파일들 출력 $ find. -name core -exec rm -i {} \ ; 이름이 core 인 파일에 대해 rm 명령어 수행 $ find. -name *.c -atime +30 -exec ls -l {} \ ; 30 일 이전에 접근된 파일 중 *.c 를 찾아 ls -l 명령어 수행 16

5.2 명령어 스케줄링 17

cron 시스템  유닉스의 명령어 스케줄링 시스템으로  crontab 파일에 명시된 대로 주기적으로 명령을 수행한다. crontab 명령어  $ crontab 파일 crontab 파일을 cron 시스템에 등록  $ crontab -l [ 사용자 ] 사용자의 등록된 crontab 파일 리스트  $ crontab -e [ 사용자 ] 사용자의 등록된 crontab 파일 수정 / 생성  $ crontab -r [ 사용자 ] 사용자의 등록된 crontab 파일 삭제 crontab 파일  7 개의 필드로 구성  분 시 일 월 요일 [ 사용자 ] 명령 18

crontab 파일 예 chang.cron _____________________________________________________________ * * * rm /home/chang/tmp/* ________________________________________________________________ $ crontab chang.cron 다른 crontab 파일의 예 20 1 * * * root find /tmp -atime +3 -exec rm -f () ';' 매일 새벽 1 시 20 분에 3 일간 접근하지 않은 /tmp 내의 파일을 삭제 30 1 * 2,4,6,8,10, /usr/bin/wall /var/tmp/message 2 개월마다 수요일부터 금요일까지 1 시 30 분에 wall 명령을 사용해서 시스템의 모든 사용자에게 메시지를 전송 19

at 명령어  미래의 특정 시간에 지정한 명령어가 한 번 실행되도록 한다.  실행할 명령은 표준입력을 통해서 받는다.  $ at [- 옵션 ] 시간 예 $ at 1145 jan 31 at> sort infile > outfile at> 20

5.3 디스크 및 아카이브 21

df 유틸리티 $ df 파일시스템 *  파일시스템에 대한 정보 ( 사용중 / 사용 가능한 디스크 공간 ) $ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda % / /dev/sda % /home /dev/sdb % /home1 /dev/sda % /boot tmpfs % /dev/shm 22

du 유틸리티 $ du [-s] 파일명 *  파일의 디스크 사용량을 보여준다.  파일을 명시하면 해당 파일의 사용량을 아니면  현재 디렉터리 내의 모든 파일들의 사용량을 보여준다.  $ du 12./htdocs/graphics 258./htdocs/images 42./htdocs/lecture/math 2582./htdocs/lecture/sp/lab /htdocs/lecture/sp... $ du –s-s(sum)

아카이브  백업 또는 다른 장소로의 이동을 위해 여러 파일들을 하나로 묶어놓은 묶음  아카이브를 만들거나 푸는데 tar(tape archive) 명령어 사용 tar 명령어  옵션 : c(create), v(verbose), x(extract), t(table of contents), f(file)  $ tar -cvf 타르파일 파일 + 여러 파일들을 하나의 타르파일로 묶으며 보통 확장자로.tar 사용  $ tar -xvf 타르파일 하나의 타르파일을 풀어서 원래 파일들을 복원  $ tar -tvf 타르파일 타르파일의 내용을 확인 24

아카이브 : 예 현재 디렉터리에 있는 모든 파일을 다른 곳으로 옮기기 $ tar -cvf src.tar *  src.tar 를 다른 곳으로 이동 $ tar -tvf src.tar $ tar -xvf src.tar 25

압축 compress/ uncompress 명령어 $ compress 파일 * $ uncompress 파일.Z * gzip 명령어 $ gzip 파일 * $ gzip -d 파일.gz* 사용 방법  파일들을 하나의 타르파일로 묶은 후 compress/gzip 을 사용해 압축  파일 복원 : 압축을 해제한 후, 타르파일을 풀어서 원래 파일들을 복원 26

압축 예 사용예 $ tar -cvf src.tar * $ gzip src.tar  이 파일을 원하는 곳으로 이동 $ gzip -d src.tar.gz $ tar -xvf src.tar 27

5.4 AWK 28

AWK  일반 스크립트 언어  AWK(Aho, Weinberger, Kernighan)  텍스트 형태로 되어있는 줄을 필드로 구분하여 처리한다.  필드는 일단은 줄을 구성하는 단어 정도로 생각하자. awk 프로그램  간단한 프로그램은 명령줄에 직접 작성하여 수행  awk 프로그램을 파일로 작성하여 -f 옵션을 이용하여 수행 $ awk [-Fc] 프로그램 파일 * $ awk [-Fc] [-f 프로그램파일 ] 파일 * 29

awk 프로그램  조건과 액션을 기술하는 명령어들로 구성됨  [ 조건 ] [ { 액션 } ]  대상 파일의 줄들을 스캔하여 조건을 만족하는 줄에 액션 수행 $ awk ‘{ print NF, $0 }’ you.txt $ awk ‘{ print $1, $3, $NF }’ you.txt $ awk ‘NR > 1 && NR < 4 { print NR, $1, $3, $NF }’ you.txt 30

조건과 액션 조건 (condition)  BEGIN // 파일 시작  END// 파일 끝  관계 연산자 혹은 논리 연산자 를 포함한 조건식  / 패턴 / 패턴에 해당하는 줄  패턴 1, 패턴 2 패턴 1 을 포함한 줄부터 패턴 2 를 포함한 줄까지 액션 (action)  if ( 조건 ) 실행문 [else 실행문 ]  while ( 조건 ) 실행문  for ( 식 ; 조건 ; 식 ) 실행문  break  continue  변수 = 식  print [ 식들의 리스트 ]  printf 포맷 [, 식들의 리스트 ]  next 현재 줄에 대한 나머지 패턴 건너 뛰기  exit 현재 줄의 나머지 부분 건너뛰기  { 실행문 리스트 } 31

AWK 프로그램 예 [ 예제 1] BEGIN { print " 파일 시작 :", FILENAME } { print $1, $NF } END { print " 파일 끝 " } [ 예제 2] BEGIN { print " 파일 시작 " } { printf "line %d: %d \n", NR, NF; line++; word + = NF } END { printf " 줄 수 = %d, 단어 수 = %d\n", line, word } 32

AWK 프로그램 예 [ 예제 3] { for (I = 1; I <= NF; I += 2) printf "%s ", $I printf " \n" } [ 예제 4] /st.*e/ {print $0 } [ 예제 5] /strong/, /heart/ { print $0 } 33

5.5 vi 에디터 34

vi 에디터  기본 텍스트 에디터로 매우 강력한 기능을 가지고 있으나  배우는데 상당한 시간과 노력이 필요하다. $ vi 파일 * 35

명령 모드 / 입력 모드 vi 에디터는 명령 모드와 입력 모드가 구분되어 있으며 시작하면 명령 모드이다. 마지막 줄 모드  :wq 작업 내용을 저장하고 종료 (ZZ 와 동일한 기능 )  :q 아무런 작업을 하지 않은 경우의 종료  :q! 작업 내용을 저장하지 않고 종료 36

vi 내부 명령어 원하는 위치로 이동하는 명령 입력모드로 전환하는 명령 수정 혹은 삭제 명령 복사 및 붙이기 기타 명령 37

원하는 위치로 이동하는 명령 커서 이동 h, ← 한 칸 왼쪽 j, ↓ 한 칸 아래쪽 k, ↑ 한 칸 위쪽 l, → 한 칸 오른쪽 BACKSPACE 왼쪽으로 한 칸 SPACE 오른쪽으로 한 칸 - 이전 줄의 처음 + 다음 줄의 처음 RETURN 다음 줄의 처음 0 현재 줄의 맨 앞 $ 현재 줄의 끝 ^ 현재 줄의 첫 글자 W 다음단어의 첫 글자 B 이전단어의 첫 글자 화면 이동 ^F 한 화면 아래로 ^B 한 화면 위로 ^D 반 화면 아래로 ^U 반 화면 위로 특정 줄로 이동 nGn 번째 줄로 이동 1G 첫 줄로 이동하기 G 마지막 줄로 이동하기 :n n 번째 줄로 이동 탐색 (search) / 탐색패턴 forward 탐색 ? 탐색패턴 backward 탐색 38

입력모드로 전환하는 명령 입력모드로 전환 i 커서 위치 앞에 삽입 a 커서 위치 뒤에 삽입 I 현재 줄의 앞에 삽입 A 현재 줄의 뒤에 삽입 o 현재 줄의 아래에 전개 O 현재 줄의 위에 전개 39

수정 혹은 삭제 명령 현재 커서를 중심으로 수정 r 단지 한 글자만 변경 R 입력하는 대로 겹쳐 쓰기 s 현재 글자 삭제 삽입 상태 C 커서로부터 줄 끝까지 변경 cc 현재 줄 전체를 변경 cw 현재 단어를 삭제하고 변경 삭제 x 커서가 있는 문자 지우기 X 커서의 왼쪽 문자 지우기 D 커서부터 줄끝까지 지우기 Dd 현재 줄의 전체를 지우기 :n,m d n~m 번째 줄 삭제 40

대치, 수행취소 / 재수행 대치 명령  각 줄의 해당되는 첫 번째 단어만 대치  :s/ 패턴 / 스트링 현재 줄에서 대치  :n,m s/ 패턴 / 스트링 지정된 줄 범위에서 대치  :n s/ 패턴 / 스트링 지정된 줄 (n) 에서 대치  s/ 패턴 / 스트링 /g 해당되는 모든 단어 대치 수행취소 / 재수행 u 방금 전 수행 내용 취소 (Undo) U 현재 줄 수행 내용을 취소. 방금 전 수행 내용을 반복 (Redo) 41

복사 / 붙이기 줄 내용 복사 (copy) nY 현재 줄에서부터 n 개의 줄을 복사 :n,m y n 번째 줄에서 m 번째 줄까지를 버퍼에 복사함 마지막으로 삭제 / 복사한 내용을 붙이기 (put). p 버퍼 내용을 커서의 뒤 ( 혹은 아래 ) 에 삽입 P 버퍼 내용을 커서의 앞 ( 혹은 위 ) 에 삽입 42

기타 다른 파일 편집  :e 파일이름 현재 파일 대신에 주어진 파 일 열기  :e! 파일이름 저장 여부를 점검하지 않고 파일 변경  :e# 이전 파일을 다시 열기 줄 번호 붙이기 줄 번호를 붙이거나 없애기 :set number 줄번호 붙이기 :se nu 줄번호 붙이기 :set nonumber 줄번호 없애기 :se non 줄번호 없애기 쉘 명령어 수행  편집기 내에서 쉘 명령어 수 행  :!ls  :!cat 43

핵심 개념 grep 명령어는 대상 파일들을 읽어서, 해당 패턴을 검색하고, 패턴을 포함하는 줄의 내용을 출력한다. sort 명령어는 텍스트 파일을 줄 단위로 정렬한다. cron 은 유닉스의 명령어 스케줄링 시스템으로 crontab 파일에 명시된 대로 주기적으로 명령을 수행한다. 유닉스에서는 tar 명령어를 사용하여 여러 파일을 하나로 묶은 후에 compress 혹은 gzip 명령어를 이용하여 압축한다. awk 프로그램은 조건과 액션을 기술하는 명령어들로 구성되며 텍스 트 파일의 줄들을 스캔하여 조건을 만족하는 각 줄에 대해 액션을 수 행한다. vi 에디터는 명령 모드와 입력 모드가 구분되어 있으며 시작하면 명령 모드이다. 44