 | 난이도 : 초급 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 : 각 라인의 끝에 달러 표시($)를 추가한다.
다음에는 head와 tail에 대해 알아보자.
참고자료
필자소개  | | 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에는
그의 소프트웨어 프로젝트가 있다. |
기사에 대한 평가
|  |