Monday, April 2, 2018

CentOS 6.6 리눅스 기초] 11.3 텍스트 관련 명령 - cut, grep


안녕하세요. 썬구루입니다.

이 게시물에서는 파일의 각 라인 섹션(Section 또는 Field)을 제거하는 명령인 cut과 필터링 명령인 grep 명령에 대해 알아보도록 하겠습니다.

■ cut 명령

텍스트로 된 데이터베이스 파일의 특정 필드 값을 추출하기 위해 또는 명령의 결과값의 특정 필드 값을 추출하기 위해 사용되는 명령이다.

1). 명령 형식

cut <옵션> [filename]

2). 옵션

옵 션
내 용
 -b LIST
 bytes를 선택하여 출력한다.
 -c LIST
 문자(Characters)를 선택하여 출력한다. 
 -f FIELD
 필드를 선택하여 출력한다.
 -d DELIMITER
 필드의 구분자를 탭(Tab) 대신에 옵션을 뒤따르는 문자를 사용한다.
 -s
 구분자를 포함하지 않는 줄은 출력하지 않는다.
 --output-delimiter=STRING
 출력에 대해 구분자 대신에 STRING 을 사용한다. STRING는 문자, 빈칸 등이 될 수 있다.



3). 예제

아래는 /etc/passwd 파일의 내용에서 각 줄의 첫 번째부터 네 번째 바이트(Bytes)까지 출력하는 것을 보여준다.


아래는 -c 옵션을 사용하여 첫 번째 문자(Character)부터 다섯 번째 문자까지 출력하는 것을 보여준다. 그리고 -c 옵션 뒤에 범위를 어떻게 지정하는 지도 보여준다.


아래는 필드 구분자로 : 문자를 지정하여 첫 번째 필드를 출력하는 것을 보여준다. 그리고 1, 3, 4 필드를 출력하는 하는 것을 보여준다. 그리고 출력할 때 구분자 : 문자 대신 공간(띄어쓰기)을 사용하여 출력하는 것을 보여준다.


■ grep 명령

이 명령은 명령의 결과값 또는 텍스트 파일의 내용에 특정 문자열을 검색 필터링하기 위해 사용된다. 시스템 또는 응용프로그램 로그 파일을 필터링하여 특정 내용을 확인하거나 동작하고 있는 특정 프로세스에 대한 정보를 보기 위해 다른 명령과 같이 많이 사용한다.

1). 명령 형식

grep [옵션] PATTERN [filename]

2). 옵션

옵 션
내 용
 -c
 패턴에 일치하는 전체 줄의 수를 출력한다. 
 -E
 egrep과 동일하게 동작한다.
 -F
 fgrep과 동일하게 동작한다.
 -f FILE
 파일로부터 패턴을 가지고 검색한다.
 -i
 패턴에 대해 대/소문자 구분없이 모두 검색한다.
 -l
 패턴을 포함하고 있는 파일의 이름을 검색 줄 앞에 표기한다.
 -n
 패턴을 포함하고 있는 줄 번호를 같이 출력한다.
 -v
 패턴을 포함하고 있는 줄을 제외한 나머지 줄을 출력한다.
 -w
 패턴이 아닌 단어(Word)로 정확하게 일치하는 것을 검색한다.
 -A NUM
 패턴 이후 뒤따르는 NUM 줄을 출력한다.
 -B NUM
 패턴 이전 앞서는 NUM 줄을 출력한다. 
 -C NUM
 -A와 -B 옵션 혼합형이다. 

3). 메타 문자 (Meta Character)

일반 문자가 아닌 특별한 의미를 가지고 있는 문자를 메타 문자라 한다. grep 명령에서 사용 가능한 메타 문자는 아래와 같으며 이를 가지고 정규 표현식을 만든다.

메타 문자
내 용
 ^
 줄(Line)의 처음을 나타낸다.
 $
 줄의 마지막을 나타낸다.
 *
 0개 이상의 문자와 대치된다.
 .
 한개의 문자와 대치된다..
 []
 괄호([])사이에 있는 문자 집합 중 하나의 문자씩 대응
 [^]
 괄호([^...])사이에 있는 문자와 속하지 않은 문자와 대응 
 \
 뒤따르는 특수 문자를 일반 문자화 한다.
  \<
 단어의 시작을 나타낸다. 
 \>
 단어의 끝을 나타낸다. 

3). 정규 표현식 (Regular Expression)

특정한 규칙을 가진 문자열의 집합을 정규 표현식이라 한다. grep, perl, C 등 각각의 정규 표현식이 존재한다. grep 명령의 메타 문자를 사용하여 간단하게 정규 표현식에 대해 알아보자. 띄어쓰기가 있는 정규 표현식 때문에 이것을 단일 따옴표로 묶었다.


정규 표현식
내 용
 '^# For'
 줄(Line)의 처음 # For로 시작하는 줄을 출력한다. 
 'and$'
 줄의 마지막 and로 끝나는 줄을 출력한다.
 'mem*'
 * 앞 문자 m이 0개 이상인 문자열이 있는 줄을 출력한다. me, mem, memm 등 가능
 '.re'
 한개의 문자와 대치된다. ore, hre, are 등 가능
 '[Tt]he'
 The, the 로 검색되는 줄을 출력한다.
 '[^a-d]oot'
 aoot, boot, coot, doot를 제외한 oot로 검색되는 줄을 출력한다.
 '\<Con'
 Con으로 시작하는 단어가 있는 줄을 출력한다.
  'ing\>'
 ing로 끝나는 단어가 있는 줄을 출력한다.

4). 예제








No comments:

Post a Comment