728x90
wc
- 파일의 행 수, 단어 수, 문자 수를 출력
- 형식 : wc [옵션] 파일명
- 옵션
- -c : 바이트 수
- -m : 문자 수
- -C : -m과 동일
- -l : 행 수
- -w : 공백 문자나 새로운 행으로 구분된 단어의 수
- 사용 예
- wc –l test2
- wc –cw test2
- 파일의 기본 정보 보기
- 라인 수 6, 단어 수 7, 바이트 수 61
$ vi test.c
$ cat test.c
#include <stdio.h>
main() {
printf(“Hello, World~!\n”);
}
$ wc test.c
6 7 61 test.c
$
- 파일의 바이트 수와 문자 수 보기 : -c, -m 옵션
- 옵션을 지정하지 않으면 바이트 수가, -m 옵션을 지정하면 문자 수가 출력됨
- 영어는 문자 수와 바이트 수가 같고, 한글은 다름
$ wc –c test.c
61 test.c
$ wc –m test.c
61 test.c
$
- wc 명령의 옵션 중복해 사용하기
- -l 옵션은 행 수만 알고 싶을 때 사용
- -w 옵션은 단어 수만 알고 싶을 때 사용
$ wc –cl test.c
6 61 test.c
$ wc –mw test.c
7 61 test.c
$
- wc 명령의 다른 사용
-
다른 명령과 (파이프)로 연결해 사용 가능 - who는 시스템에 접속 중인 사용자의 정보를 출력
- who는 한 사람당 한 라인씩 정보 출력, 결과로 나온 총 라인 수로 시스템에 접속한 사용자 수를 알 수 있음
- 현재 6명이 시스템에 접속해 있음
-
$ who | wc –l
6
$
grep
- global regular expressions print, 파일에서 정규 표현식을 포함한 모든 행을 출력
- 지정한 패턴을 포함하는 행을 찾음
- 형식 : grep [옵션] 패턴 [파일명]
- 옵션
- -i : 대소문자 모두 검색
- -l : 해당 패턴을 포함하는 파일 이름 출력
- -n : 행 번호 출력
- -v : 패턴을 포함하는 행을 제외한 행 출력
- -c : 패턴을 포함하는 행 수 출력
- -w : 패턴이 하나의 단어로 된 것만 출력
- 사용 예
- grep root /etc/passwd
- grep –n unix ~/*.txt
- grep –l hello *.c
$ vi grep.dat
$ cat grep.dat
root other sh
system admin
UNIX 123
unix 345
unix+ other
Network 10
adm syslog ksshin
disk admin
cdrom ksshin
ksshin 1000 csh
user1 1001 ksh
$
- unix가 들어 있는 행 찾기
$ grep unix grep.dat
unix 345
unix+ other
$
- grep은 첫 번째 인자만 제외하고 나머지를 모두 파일 이름으로 간주
- 문자열에 공백이 포함되어 있으면 따옴표로 묶어야 함
- 파일 이름을 지정하지 않으면 표준 입력장치에서 검색할 데이터를 읽음
- 표준 입력 종료는 ^D
- ‘ls –F ~‘의 실행 결과 중 /를 포함하는 내용만 출력
- 나의 홈 디렉토리 아래에 있는 디렉토리 목록만 출력
$ ls –F ~ | grep ‘/’
Desktop/
Documents/
Music/
......
Unix/
$
- who 명령의 실행 결과 중 나와 관련된 정보만 화면 출력
- $LOGNAME은 나의 로그인 ID를 저장하는 환경 변수
$ who | grep $LOGNAME
ksshin tty2 2015-07-01 00:57
ksshin :0 2015-06-30 18:35 (:0)
ksshin pts/0 2015-06-30 18:45 (:0.0)
$
grep 정규 표현식 사용하기
- grep 명령을 사용해 정규 표현식 패턴 찾기
- 정규 표현식으로 표현된 패턴은 작은따옴표로 묶어줌
$ grep ‘^root’ grep.dat
root other sh
$ grep ‘sh$’ grep.dat
root other sh
ksshin 1000 csh
user1 1001 ksh
$ grep ‘[0-9].*’ grep.dat
UNIX 123
unix 345
Network 10
ksshin 1000 csh
user1 1001 ksh
$
egrep
- 확장된 정규 표현식(extended regular expression)을 사용하는 grep 명령
- grep과 사용법은 동일
- 정규 표현식에 사용할 수 있는 특수 문자가 더 추가됨
- +를 사용한 검색 예
$ egrep ‘[34]+’ grep.dat
UNIX 123
unix 345
$
- l 를 사용하여 두 번 검색하던 것을 한 번으로 줄일 수 있음
$ egrep ‘csh|bash’ grep.dat
ksshin 1000 csh
$
fgrep
- 지정한 파일에서 문자열을 찾는 명령
- 문자열에 포함된 모든 정규식 관련 특수 문자를 일반 문자로 해석해 검색
$ fgrep unix+ grep.dat
unix+ 123
$ fgrep ‘[0-9].*’ grep.dat
$
- grep 명령에서 사용하는 모든 특수 문자 앞에 이스케이프 문자(‘\’)를 사용하면 fgrep과 같은 효과
- 다음 두 가지 명령의 결과는 같음
- 결국 특수 문자를 검색할 때, fgrep을 사용하는 것이 보다 편리함
$ fgrep ‘[0-9].*’ grep.dat
$ grep ‘\[0-9\]\.\*’ grep.dat
728x90
'프로그래밍 > Unix' 카테고리의 다른 글
[유닉스] 분할 ( split ) (0) | 2020.04.20 |
---|---|
[유닉스] 파일 정렬 ( sort ) (0) | 2020.04.20 |
[유닉스] 파일 송신, 수신 (telnet, rlogin, ssh, ftp, rcp) (0) | 2020.04.17 |
[유닉스] 통신 명령어( write, wall, talk, mesg ) (0) | 2020.04.16 |
호스트와 사용자 정보( hostname, nslookup, ping, finger ) (0) | 2020.04.15 |