강좌
클라우드/리눅스에 관한 강좌입니다.
자격증 분류

리눅스마스터2급강좌 : 파일정보 추출하기 wc

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터2급강좌 : 파일정보 추출하기 wc

파일 정보 추출

wc

wc는 지정한 하나 이상의 특정 파일들 내에 존재하는 바이트(bytes), 단어(words), (lines)수를 카운트하여 출력해 주는 명령어이다.

 

 

 

 

두 개 이상의 파일의 바이트, 단어, 행의 수를 카운트하면 전체 합과 함께 출력해 주기도 한다.

 

다음은 아무 옵션 없이 파일의 정보를 추출한 것이다.

 

 

 

 

이 경우에는 바이트수, 단어수 및 행수를 카운트한 결과를 출력해 준다.

 

 

 

 

 

# wc README

64 279 2075 README

#

 

 

 

 

 

wc 명령어에서 사용하는 옵션들은 다음과 같다.

 

옵 션

기 능

-c

바이트(byte)의 수를 출력한다.

-m

문자(character)의 수를 출력한다.

 

 

 

 

영문자 1개는 1바이트이다.

-l

행수(line)의 수를 출력한다.

-L

가장 긴 행의 문자의 수를 출력한다.

-w

단어(word)의 수를 출력한다.

 

다음은 c 옵션을 사용한 예제이다.

 

 

 

 

 

# wc c README

2075 README

#

 

 

 

 

 

cut

cut은 특정 파일의 각 필드들을 출력하여 제거하거나 원하는 필드만 출력할 수 있는 명령어이다.

 

 

 

 

이 명령어는 텍스트 문서의 특정 필드를 제거하여 편집하거나 원하는 입력폼으로 재생성하는 용도로 사용된다.

 

 

 

 

cut 명령어는 awk와 텍스트 파일의 출력 편집용으로 많이 사용된다.

cut 명령의 예제로 앞서 설명한 /etc/passwd 파일을 사용한다.

 

 

 

 

이 파일은 콜론(:)으로 구분되어 있다.

 

 

 

 

cut 명령어를 사용할 때 순서(바이트, 문자 또는 필드)를 구분하는 경우에는 숫자로 표시하는데 이것은 다음과 같은 규칙을 가진다.

 

N : 1에서 N번째 위치한 것

N, M, O : N번째, M번째, O번째를 의미(쉼표로 구분하여 여러 숫자를 나열)

N- : N번째부터 시작하여 마지막까지

N-M : N번째부터 시작하여 M번째까지

-M : 1번째부터 시작하여 M번째까지

그리고 다음에 사용되는 옵션의 의미는 다음과 같다.

 

옵 션

기 능

-b

지정된 바이트(byte)를 출력

-c

지정된 문자를 출력

-d

필드 구분자를 설정

-f

지정된 필드를 출력

-s

필드 구분자를 포함하지 않은 행은 출력하지 않음

 

다음은 passwd 파일의 각 행들에서 5번째 바이트(byte)에 해당하는 문자들만 출력한 것이다.

 

 

 

 

 

[root@sulinux ~]# cut -b5 /etc/passwd

:

x

o

x

:

:

d

:

...중략...

x

d

x

x

k

n

[root@sulinux ~]#

 

 

 

 

 

다음은 passwd 파일의 각 행들에서 10번째부터 20번째 바이트(byte)에 해당하는 문자들을 출력한 것이다.

 

 

 

 

[root@sulinux ~]# cut -b10-20 /etc/passwd

0:root:/roo

:bin:/bin:/

2:2:daemon:

:adm:/var/a

lp:/var/spo

0:sync:/sbi

x:6:0:shutd

0:halt:/sbi

...중략...

:x:68:68:HA

37::/var/li

5:25:Named:

43:X Font S

42::/var/gd

:500:500::/

:x:501:501:

[root@sulinux ~]#

 

 

 

 

 

다음은 passwd 파일을 콜론으로 구분하여 1번째, 2번째 및 3번째 필드를 출력하도록 한 것이다.

 

 

 

 

 

[root@sulinux ~]# cut -d : -f 1,2,3 /etc/passwd

root:x:0

bin:x:1

daemon:x:2

adm:x:3

lp:x:4

sync:x:5

shutdown:x:6

halt:x:7

...중략...

rpm:x:37

named:x:25

xfs:x:43

gdm:x:42

freekgb:x:500

sulinuxer:x:501

[root@sulinux ~]#

 

 

 

 

 

grep

grep“Globally find Regular-Expression and Print”의 약어이며 지정된 파일 내의 특정 문자나 단어를 검색하는 명령어로서 파일 편집이나 특정 문자를 포함한 단어를 찾는데 매우 유용하게 사용된다.

 

 

 

 

그리고 grep 명령어는 지정된 파일 내에서 특정 문자가 몇 개나 들어있는가를 확인할 때에도 유용하게 사용되며, 특정 문자가 포함된 행 자체를 출력하여 확인할 때에도 빈번하게 사용된다.

 

 

 

 

grep은 기본적으로 대소문자를 구분하여 검색한다.

 

 

 

 

만약 대소문자를 구분하지 않는 검색을 하려면 i 옵션을 사용한다.

 

또한 압축된 파일 내에서 특정 문자나 단어를 검색하는 zgrep도 매우 유용하고, egrepgrep의 확장된 명령어로서 파일 내의 특정 문자를 확장된 정규표현으로 검색한다.

 

 

 

 

또한 fgrep은 파일 내의 특정 문자열을 고정된 문자열로만 인식하여 검색한다.

 

 

 

 

따라서 egrep“grep E” 명령과 같고, fgrep“grep F” 명령과 같다.

 

우선 다음과 같이 grep에서 자주 사용되는 검색문자패턴 정규표현을 알아 두도록 한다.

 

정규표현

의미

?

아무 문자나 한 문자를 의미

*

어떤 문자열이나 문자 길이에 무관한 문자열을 의미

^

행의 시작 위치를 의미

$

행의 마지막 위치를 의미

[ ]

한 문자 길이의 패턴 리스트

[^ ]

지정된 문자들 이외의 문자들을 의미(^는 여집합을 의미)

\

뒤에 오는 문자를 문자 그대로 인식(특수 문자를 그대로 표현할 때 사용)

/<

단어의 시작 위치를 의미

/>

단어의 마지막 위치를 의미

 

grep의 가장 기본적인 기능은 지정된 파일 내에서 특정 문자를 찾는 것이다.

 

 

 

 

이를 위해 “grep 찾을문자 대상파일의 형식으로 명령을 내린다.

 

 

 

 

아래는 README 파일에서 “apache”라는 문자를 찾은 예이다.

 

 

 

 

 

# grep apache README

server project page under http://httpd.apche.org/.

http://httpd.apache.org/docs/.

#

 

 

 

 

 

grep 명령과 자주 사용되는 옵션들은 다음과 같다.

 

 

 

 

 

옵 션

기 능

-c, --count

특정 문자를 포함한 행의 개수를 출력한다.

-v

특정 문자를 포함하지 않는 행만 검색한다.

-E, --extended-regexp

PATTERN을 확장된 정규표현으로 해석한다.

-e PATTERN

PATTERN을 찾을 문자로 사용. -로 시작하는 패턴들을 보호하기 위해 유용하다.

-F, --fixed-strings

PATTERN을 고정된 문자열의 목록으로 해석하여, 그것 모두에 일치하는 행들을 출력한다.

-i

대소문자 구분없이 특정 문자를 검색한다.

-l

입력 파일의 일반 출력을 무시하고 찾을 문자와 일치하는 입력 파일의 이름을 보여준다.

-n

각 행을 입력 파일 내의 행번호와 함께 출력한다.

-r

각 디렉토리 아래의 모든 파일들을 읽는다.

-w

전체 단어와 일치하는 단어들을 포함하는 행만 출력한다.

 

 

 

 

 

-x

정확하게 전체 행과 일치하는 행들만 출력한다.

 

 

다음은 지정된 파일 내에서 특정문자가 존재하지 않는 행만 검색하는 예이다.

 

 

 

 

 

# grep v apache README

 

 

 

 

 

다음은 지정된 파일에서 “apache”라는 문자를 포함하지 않는 행의 개수가 몇 개인가를 출력하기 위해 v 옵션과 c 옵션을 함께 사용한 예이다.

 

 

 

 

 

# grep vc apache README

 

 

 

 

 

다음은 grep 명령이 대소문자를 구분하지 않도록 한 예이다.

 

 

 

 

 

# grep i apache README

 

 

 

 

 

다음은 i 옵션과 c 옵션을 함께 사용한 것이다.

 

 

 

 

, README라는 파일 내에 대소문자 구분 없이 apache라는 문자열을 포함한 행이 몇 개나 있는가를 확인한 예이다.

 

 

 

 

 

# grep ic apache README

 

 

 

 

 

다음은 파이프(|)와 정규표현을 사용하여 grep 명령을 사용한 예이다.

 

 

 

 

 

# ls l /etc | grep “^d”

 

 

 

 

 

다음은 egrep의 예로서 앞서 다룬 find에 관한 예제를 다시 기술한 것이다.

 

 

 

 

다음은 특정 문자를 포함하는 파일을 찾고 해당 파일에서 그 문자가 속한 행을 찾는 예제이다.

 

 

 

 

 

# find /home/bible type f exec egrep i “doc” /dev/null {} \;

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,017 명
  • 현재 강좌수 :  35,690 개
  • 현재 접속자 :  221 명