CAFE

리눅스 특별강좌

[정성재강사][제9강][리눅스명령어]4.텍스트파일처리 명령어(I)

작성자위시|작성시간03.11.18|조회수3,133 목록 댓글 0
텍스트파일 처리 명령(I)
1. cat(concatenate)
 (1) 설명 : 표준입력으로 받는 값을 표준 출력으로 보낸다. 기본적으로 파일의 내용을 출력을 한다.
           여러개의 파일이름을 적어주면 차례로 출력시키므로 파이프나 리다이렉션을 통해 파일을
           하나로 합치는 기능도 수행한다. 도스의 'type'명령과 유사하다.
 (2) 사용법
   cat [option] filename(s)
 (3) option 
   -b : 줄번호를 붙여 준다.(공백만 있는 줄은 제외)
   -n : 줄번호를 붙여 준다. (공백만 있는 줄도 포함)
   -E : 각 라인의 맨 끝에 $표시를 붙여 출력한다.
   -T : 탭문자를 ^I로 표시하여 출력한다.
   -v : 인쇄가 불가능한 문자를 식별할 수 있도록 출력한다. 
   -A : 모든 문자를 출력해준다. 일반적으로 출력되지 않는 특수문자도 출력해준다.
   -s : 인접한 여러 공백줄을 하나의 공백줄로 출력한다.
 (4) 사용예
   1) cat 
       => 표준입력(키보드로부터의 입력)을 표준출력(모니터)로 출력한다. 
   2) cat > a.txt 
       => 키보드로부터 입력받은 내용을 a.txt라는 파일에 저장한다. 입력한 후에 [CTRL]+[d]를 
         입력하면 입력한 내용이 a.txt로 저장된다.
   3) cat < a.txt 
       => a.txt 파일의 내용을 화면에 출력해준다. '<'를 생략하고 cat a.txt 한 것과 같다.
   4) cat < a.txt > b.txt
       => a.txt의 내용을 b.txt라는 파일에 출력한다. 이 경우에는 cp a.txt b.txt한 것과 같다.
   5) cat a.txt b.txt
       => a.txt내용과 b.txt내용을 화면에 출력한다.
   6) cat a.txt b.txt > c.txt 
       => 'a.txt', 'b.txt' 두 파일 내용을 합해서 c.txt라는 파일로 저장한다.
   7) [posein@www posein]$ cat -b a.txt
      1  I love linux
      2  I love windows

      3  I love unix
       => 공백에는 줄번호를 붙이지 않는다.
   8) [posein@www posein]$ cat -n a.txt
      1  I love linux
      2  I love windows
      3
      4  I love unix
       => 공백만 있는 줄에도 줄번호를 붙여서 보여준다.
 (5) 참고: redirection
   1) 설명: 입출력의 방향을 바꾸는 역할을 한다.
   2) 기호
    >  : 출력의 방향을 파일로 바꾼다.
    >> : 특수출력(기존의 파일에 내용 추가)
    <  : 입력의 방향을 파일로 바꾼다.
    << : 특수입력
   3) 사용예
    ㄱ. cat > a.txt
         => 표준입력(키보드)로 입력받아서 표준출력(화면)으로 출력하지 않고 a.txt라는 파일에 
           출력(저장)한다.
    ㄴ. cat >> a.txt
         => 기존의 a.txt라는 파일이 존재하면 그 파일에 표준입력(키보드)으로 부터 받은 내용을
           추가한다. 만약 기존에 a.txt라는 파일이 존재하지 않으면 '>'의 역할과 같다.
    ㄷ. cat < a.txt
         => a.txt라는 파일로부터 입력받아 표준출력(화면)에 보여준다.
    ㄹ. [posein@www posein]$ cat << end
        > I love linux
        > I love windows
        > end
        I love linux
        I love windows
          => 이 경우에는 << 뒤에 오는 end라는 문자열을 입력을 사용하는데 그 문자열이 입력될 
            때까지 기다렸다가 해당문자열이 입력되면 한번에 표준출력으로 보여준다.

2. head
 (1) 설명 : 파일의 첫 부분을 보여주는 명령. 텍스트 파일의 앞에서부터 주어진 수만큼의 행을 
           보여준다. 기본값은 10줄이다.
 (2) 사용법
   head [-count] [option] filename(s)
    => 파일의 처음 줄부터 count로 주어진 만큼의 줄을 보여준다. count가 지정되지 않으면,
      디폴트로 10을 사용한다. 여러 파일을 나열하여 첫부분만 볼 수 있다.
 (3) option
   -n 행수 : 파일의 앞에서부터 지정된 수만큼 출력한다. n을 생략하고 그냥 입력해도 된다.
            '--lines 행수' 옵션과 같다.
   -c n : n바이트까지 출력한다. n뒤에 k나 m을 쓸 경우 KB나 MB를 나타낸다.
   -q : 여러 개의 파일이 처리될 때 파일 이름 헤더를 출력하지 않는다.
 (4) 사용예 
   1) head -3 *.c
       => 현재 디렉토리안의 '.c'로 끝나는 모든 파일의 처음 3줄씩을 보여준다.
   2) head -q *.txt
       => 현재 디렉토리안의 *.txt로 끝나는 모든 파일의 처음 10줄씩 보여주는데 파일의 이름은 
         출력하지 않는다.

3. tail
 (1) 설명 : head와 반대로 파일의 끝부분을 보여준다. 파일의 가장 끝줄부터 지정된 갯수 만큼의 
           줄을 보여준다.
 (2) 사용법 
   tail [-count] [option] filename(s)
    => 파일의 끝줄부터 count만큼의 줄을 보여준다. count가 지정되지 않으면 디폴트값인 10을 
      사용한다.
 (3) option
   -n m : 마지막에서 m행만 출력한다. '--line 행수'와 같다.
   -c : 마지막 n바이트만 출력한다. n 뒤에 k나 m을 쓰면 KB나 MB를 의미한다.
   -f : 특정파일의 끝부분에 새로운 행이 추가될 경우 실시간으로 출력한다. 로그파일을 볼 때 유용
       하게 쓰인다. (--follow)
   +n : 파일의 처음 n라인부터 끝까지 출력한다.
   -q : 여러개의 파일이 처리될 때 파일 이름 헤더를 출력하지 않는다.
 (4) 사용예 
   1) tail aaa.txt 
      => aaa.txt라는 파일의 마지막 10행을 보여준다.
   2) tail -f /var/log/messages
      => 동적으로 파일의 변경된 값을 보여준다.
 (5) 응용예 : head와 조합하여 파일의 중간을 자를 수 있다.
    head -30 aaa.txt | tail > /tmp/ddd.txt
    => aaa.txt 라는 파일의 21번째 줄에서 30번째 줄까지의 내용을 /tmp/ddd.txt라는 파일로
      저장한다.

4. more
 (1) 설명 : 출력을 페이지 단위로 나누어서 보여준다. 도스의 'more'명령과 유사하다.
 (2) 사용법
   more [-line] filename(s)
    => lines는 한 화면에 표시할 줄의 수이다.
 (3) more실행상태에서 사용하는 명령
   h : more에 관한 도움말의 볼 수 있다
   SPACE : 다음 페이지를 보여준다.
   RETURN : 한 줄씩 보여준다.
   d, (CTRL+D) : 반 페이지씩 보여준다.
   q,Q : 종료한다.
   b, ^B : 이전 페이지를 보여준다.
   f : 다음 페이지를 보여준다.
   / (검색어) : 검색어에 해당하는 단어를 검색한다.
   = : 현재 line number를 보여준다.
   ^L : 화면을 다시 리프레쉬 시킴
   :f : 현재 파일의 이름과 현재 line number를 보여준다.
   ! : 중간에 다른 명령을 입력할 수 있는 상태가 된다.
 (4) 사용예 : 보통 다른 명령어와 '|'를 이용 조합하여 많이 사용된다.
   1) more /etc/inittab
      => /etc/inittab 파일의 내용을 페이지단위로 나누어서 보여준다.
   2) more -20 /etc/inittab
      => /etc/inittab파일의 내용을 20줄을 한 페이지로 하여 나누어서 보여준다
   3) cat readme |more 
      => readme파일을 한 화면단위로 출력하라.
   4) ls /etc |more 
      => /etc디렉토리의 파일의 내용을 한 화면단위로 출력하라.

5. less
 (1) 설명: more의 기능과 유사하고 리눅스에서만 사용가능하다. more보다 더 나은 기능들이 많다.
          대표적인 기능으로 문서의 앞으로도 이동이 가능하다. man 페이지에서 호출하는 명령이
          less명령이다.
 (2) 사용법 
   less [option] 파일명
 (3) option
   -? : less실행시 사용하는 명령들에 대한 도움말을 화면에 출력한다.
   -c : 화면에 출력하기 전에 화면을 정리하여 맨 처음에 위치되도록 해준다.
   -s : 인접한 여러 공백줄을 하나의 공백줄로 처리하여 화면에 보여준다.
 (4) less실행상태에서 사용하는 명령
   [space] : 다음 페이지로 이동한다. f 와 같다.
   f : 다음 페이지로 이동한다. [space]와 같다.
   b : 이전 페이지로 이동한다.
   [enter] : 다음라인으로 이동한다. e 와 같다.
   e : 다음라인으로 이동한다. [enter]와 같다.
   y : 이전라인으로 이동한다.
   /text : 아래방향으로 'text'라는 문자열을 찾아 맨 첫라인에 위치시킨다.
   ?text : 위방향으로 'text'라는 문자열을 찾아 맨 첫라인에 위치시킨다.
   n : 다음 'text'라는 문자열을 찾아 맨 첫라인에 위치시킨다.
   N : 윗방향으로 'text'라는 문자열을 찾아 맨 첫라인에 위치시킨다.
   q : less 명령을 끝낸다.

6. grep(Global Regular Expression‎ Print)
 (1) 설명 : 파일안에서 특정 패턴을 갖는 줄을 찾아서 출력해주는 명령이다.
 (2) 사용법 
   grep [option] pattern file(s)
    => pattern에 찾고자 하는 문자열을 입력하면 지정해준 파일에서 그 문자열을 찾는다.
 (3) option
   -c : 파일안에 pattern과 일치하는 줄이 몇 개인지만을 출력한다.
   -C : 패턴이 일치하는 문장의 아래 위 두 라인까지 포함하여 출력한다.
   -h : 여러 개의 파일을 검색시 출력하는 파일의 이름이 붙는 것을 방지한다.
   -i : 탐색할 때 대,소문자를 구분하지 않는다.
   -y : -i와 똑같다.
   -n : 일치하는 줄이 파일의 몇번째 줄인지 내용과 같이 출력한다.
   -v : pattern과 일치하지 않는 줄만을 출력한다.
   -w : 패턴과 한 단어로 일치해야 출력한다.
   -x : 패턴과 전체 라인이 일치해야 출력한다.
   -l : 주어진 패턴과 일치하는 패턴이 있는 파일의 이름만 출력한다.
   -r : 하위디렉토리까지 주어진 패턴을 찾는다.
 (4) 사용예
   1) grep linux * => 현재 디렉토리의 모든 파일중에서 'linux'라는 문자열이 들어가 있는 줄을 
                     찾는다.
   2) grep -c linux * => 현재 디렉토리의 모든 파일들이 'linux'라는 문자열이 들어있는 줄을 
                        몇개씩 가지고 있는지를 보여준다.
   3) grep -h linux * => 현재 디렉토리에 있는 모든 파일중에서 'linux'라는 문자열이 들어있는 
                        줄을 출력하는데 파일명은 출력하지 않는다.
   4) grep "[0-9]" readme => readme파일에서 숫자로 시작하는 모든 라인을 보여준다.
 (5) 참고: grep 명령과 정규표현식(Regular Expression‎)
   1) 정규표현식: 정규표현식이란 좀 더 쉽고 다양하고 정교하게 찾을 수 있도록 지원해주는 특정한
                 패턴을 말한다.
   2) 지원되는 문자
     .  : 매칭되는 한 문자로 무조건 존재해야 한다.
     .* : 한문자에 추가로 0(zero)이거나 그 이상의 문자
     a* : 아무것도 없거나 a라는 문자열이 하나이거나 반복되어진 문자열을 뜻한다. 즉, a, aa, aaa
         등
     a? : a 한문자이거나 a이외의 문자가 전혀 없는 경우.
     a+ : a 한문자이거나 a가 반복되는 경우
     a\{n\} : a가 반복되는 경우
     [문자list]: 문자 list중의 한문자
     [abc]: a , b 또는 c
     [0-9]: 0, 1, 2, 3, 4, 5, 6, 7, 8, 또는 9
     [^1-3]: 1, 2, 3을 제외한 모든 문자
     '^pattern': pattern이 줄의 처음에 있을 때에만 일치
     'pattern$': pattern이 줄의 끝에 있을 때에만 일치
     '\<pattern': 단어가 pattern으로 시작할 때에만 일치
     'pattern\>': 단어가 pattern으로 끝날 때에만 일치
   3). 사용예
    ㄱ. [posein@www posein]$ cat a1.txt
        designer
        programmer
        engineer
        abc
        [posein@www posein]$ grep [^abc] a1.txt
        designer
        programmer
        engineer
         => abc라는 문자열을 제외한 문자들이 있는 라인을 출력하는 명령이다. 그러나 a1.txt의
          4번째줄은 전부 abc로 되어 있으므로 출력되지 않는다.
    ㄴ. [posein@www posein]$ cat a.txt
        I love linux
        I love windows
        I love lanux
        [posein@www posein]$ grep l.n a.txt
        I love linux
        I love lanux
         => '.'이 한문자라는 뜻이다.
    4) 기타 예제 총정리
      c.t         : cat, apricot, cute, locate
      c[ai]t      : catalyst, citation, incapacitate, Piscataway
      s[^aeiou]ri : airstrip, describe, offspring, Sanskrit
      at*r        : atrocious, award, attribute, barrel
      sa.*re      : massacre, sacred, sapphire, satire
      s[ao]*r     : classroom, censor, emissary, soar
      sa.*re$     : massacre, satire
      ^sa.*re     : sacred, satire

7. wc(word count)
 (1) 설명 : 텍스트 파일의 행수, 단어수, 문자수를 알려준다. 많이 쓰이는 명령어는 아니지만 
           프로그래머에게 유용한 명령이다.
 (2) 사용법 
   wc [option] file(s)
 (3) option
   -l : 행 수를 센다. (--lines 라고 해도 된다.)
   -w : 단어 수를 센다.
   -c : 문자 수를 센다.
   -L : 가장 긴 라인의 길이를 출력한다.
 (4) 사용예
   1) wc readme => readme파일의 행, 단어, 문자의 수를 출력한다.
   2) who | wc -l => 현재 접속한 사람의 수를 표시한다.
   3) [posein@www posein]$ cat a.txt
      I love linux
      I love windows
      [posein@www posein]$ wc a.txt
      2       6      28 a.txt
       => a.txt라는 파일의 행수는 2, 단어수는 6, 문자수는 28이다. 참고로 실제 문자수를 세어보
         면 공백문자를 포함하여 26자이다. 그러나, 한 라인후에 [Enter]키를 입력하면 눈에 보이지
         않는 개행문자가 삽입되면 wc로 카운트해보면 한라인당 한문자씩가 추가된다.
다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼