跳转到主要内容
메인 컨텐츠로 가기

한국 developerWorks  >  리눅스  >

팁: cat을 이용한 파일 연결

textutils의 이해

developerWorks
문서 옵션

JavaScript가 필요한 문서 옵션은 디스플레이되지 않습니다.


난이도 : 초급

Jacek Artymiak, 프리랜스 작가 & 컨설턴트

2002 년 10 월 01 일

GNU 텍스트 유틸리티 시리즈! 이번에는, 유닉스 사용자들에게 너무나도 특별한 존재인 cat에 대해 알아본다.

가끔씩 여러 파일들을 하나로 프로세스 해야 하고, 프로세싱의 결과를 하나의 아웃풋 파일에 저장해야 할 때가 있다. cat 명령어(concatenate (연결하다;붙여 하나로 만들다)의 축어)는 한개 이상의 인풋 파일을 하나의 파일로 만든다. 예를들어 cat chapter01 chapter02 chapter03 > book은 세 개의 chapterXX 파일들을 하나의 book 파일로 저장한다.

인풋 파일들은 cat 명령어 뒤에 리스트 되어있는 순서로 프린트된다. 따라서 정보의 순서를 뒤집으려면 인풋 파일의 순서 부터 바꿔야한다. 또한 프로세스 될 파일의 수가 많아 일일이 손으로 타이핑 할 수 없을 때 cat chapter* > book 같이 와일드카드를 사용할 수 있다. 단, 파일 이름은 오름차순으로 소팅될 것이라는 것을 기억해야 한다.

cat의 아웃풋이 파일이나 다른 명령어의 표준 인풋으로 리다이렉팅 되지 않을 때 cat은 대부분의 명령행 툴 처럼 작동하며 아웃풋을 콘솔로 보낸다. 이것은 cat을 사용하여 파일을 디스플레이할 수 있다는 것을 의미한다; 예를들어, cat /etc/passwd 를 사용하여 시스템 패스워드 파일 내용을 디스플레이 한다.

cat은주로 파일을 연결하는데 쓰이지만 간단한 자동 인풋 프로세싱에도 사용할 수 있다. 예를들어, 하나의 공백(blank) 라인으로(-s 옵션 사용) 여러 개의 공백 라인을 지울 수 있다. 이것은 엔드유저에게 보여주기 직전 소스 코드를 청소할 수 있는 좋은 방법이다. cat은 공백 라인 모두를 제거하는 옵션은 없다. 하지만 sed 명령어로 제거할 수 있기 때문에 큰 문제는 아니다:


Listing 1. sed와 cat을 사용하여 블랭크 라인 제거하기

$ cat -s /etc/X11/XF86Config | sed '/^[[:space:]]*$/d'

...

# Multiple FontPath entries are allowed (they are concatenated together)

# By default, Red Hat 6.0 and later now use a font server independent of

# the X server to render fonts.

    FontPath   "/usr/X11R6/lib/X11/fonts/TrueType"

    FontPath   "unix/:7100"

EndSection

...

공백 라인 압축은 설정 파일과 HTML 페이지의 소스를 읽는데 필요한 손쉬운 트릭이다. 특히 불필요한 새로운 라인들을 삽입하는 스크립트로 만들어졌다거나 아이템들이 빈 라인으로 분리되어있는 많은 조건문 구조를 포함하는 소스일 경우 유용하다.

cat의 주요한 특징 중 하나는 라인을 세는 기능이다. 프로그램 문서화와 법률적이고 과학적인 문서화에 유용하다. 왼편에 프린트된 라인 번호는 문서의 특정 부분을 참조할 때 편리하다. 프로그래밍, 과학연구, 비지니스 보고서, 법률 제정 작업에 있어서 매우 중요하다. 라인을 세는 두 개의 옵션이 있다: -b는 비 공백(non-blank) 라인 전용 넘버링 옵션이고 -n은 모든 라인을 넘버링하는 옵션이다:

cat은 탭(tab) 같은 비 프린팅(non-printing) 문자를 포함하는 파일 보기에도 도움이 된다. 다음과 같은 옵션이 있다:

  • -T : 탭을 ^I로 디스플레이한다.
  • -v : 비 프린팅 문자를 디스플레이한다. 예를들어, Windows 시스템에서 생성된 파일을 프로세싱 할 때, Control-M (^M) 문자를 사용하여 라인의 끝을 표시한다.
  • -E : 각 라인의 끝에 달러 표시($)를 추가한다.

다음에는 headtail에 대해 알아보자.




위로


참고자료




위로


필자소개

Jacek Artymiak은 프리랜스 컨설턴트, 개발자, 작가로 활동하고 있다. 1991년 부터 UNIX와 BSD 시스템(AIX, HP-UX, IRIX, Solaris, Linux, FreeBSD, NetBSD, OpenBSD)는 물론 MS-DOS, Microsoft Windows, Mac OS, Mac OS X의 소프트웨어를 개발했다. Jacek은 비지니스/금융 애플리케이션 개발, 웹 디자인, 네트워크 보안, 컴퓨터 그래픽, 애니메이션, 멀티미디어 전문가이며, "Install, Configure, and Customize Slackware Linux" (Prima Tech, 2000)과 d "StarOffice for Linux Bible" (IDG Books, 2000)의 저자이기도 하다. SourceForge에는 그의 소프트웨어 프로젝트가 있다.





위로


기사에 대한 평가

매우 불만족 (1)
불만족 (2)
보통 (3)
만족 (4)
매우 만족 (5)




위로



    IBM 소개개인정보 보호정책문의