UNIX COMMAND (5) : grep, sed, awk 등
▒ grep : 패턴을 이용한 search =>
regular expression을 잘 만드는 것이 필요하다.
grep option(s)
pattern filename(s)
OS/tdir] grep -n dba
/etc/group # -n
: 파일 안에서의 패턴이 발견된 라인 및 라인 번호
OS/tdir] grep -v dba
/etc/group
# -v : 패턴이 발견되지 않은 라인
OS/tdir] grep -n dba /etc/group
/etc/passwd # 파일을
여러개 나열...
OS/tdir] grep -i the
~/tdir/*
# -i : 대소구분 무시(ignore) => the 대소구분 없이
OS/tdir] grep -li the
~/tdir/*
# -l : 패턴이 들어있는 파일 이름만...
OS/tdir] grep -c the
~/tdir/*
# -c : 패턴이 들어있는 라인 번호만...
[패턴을 좀더 정교하게 표현하려면 regular expression을 사용해야 한다]
^ :
^패턴 : 패턴으로
시작하는 모든 라인 찾기
$ :
패턴$ : 패턴으로 끝나는 모든 라인
찾기
. :
d...
: d로 시작하는 4자리 character 찾기
*
: [a-d]* : a, b, c,
d로 시작하는 character 찾기
[] : [Dd]atabase : Database 또는
database 찾기
[^] :
[^D] :
D가 나타나지 않는 라인 찾기
OS/tdir] grep -i ^the
~/tdir/*
# the로 시작하는 라인 찾기
OS/tdir] grep -i meal.$
~/tdir/* # meal.으로 끝나는 라인
찾기
OS/tdir] grep c...d
~/tdir/*
# c로 시작하고 d로 끝나는 5자리 character 찾기
========================================================================================
▒
egrep(expression grep) : searches
files for a pattern of characters
and prints all lines that contain that pattern.
OS/tdir] egrep '(a|A)d+' /etc/passwd # ad 또는 Ad가
포함된 라인 찾기
OS/tdir] vi
grep_test
# 아래 내용을 추가하세요... 붙여넣기... ^^
An Oracle database is a collection of data treated as a unit.
The
purpose of a database is to store and retrieve related information.
A
database server is the key to solving the problems of information management.
OS/tdir] egrep 'Oracle|purpose'
grep_test # Oracle 또는 purpose가 포함된 라인 찾기
========================================================================================
▒ sed : stream editor => file을 열지 않고
data를 편집하는 기능
sed [-options] [address] command file... [>newfile]
# sed '/pattern/d'
filename # file에서 패턴이 포함된 라인을 지우고 그 결과를 화면에
표시
# 원본 파일에는 아무런 변화가 없다.
OS/tdir] cp grep_test sed_test
OS/tdir] cat sed_test
OS/tdir] sed '/purpose/d'
sed_test
# purpose 라는 단어가 들어간 라인 삭제
# sed '#d'
filename : # 라인만 삭제
# sed '$d'
filename : 마지막 라인 삭제
# sed '#,$d'
filename : # 라인부터 마지막 라인까지 지우기
# sed '#,#d'
filename : # 라인부터 # 라인까지 지우기
OS/tdir] sed '1d'
sed_test # 1 라인만 삭제
OS/tdir] sed '$d'
sed_test # 마지막 라인만 삭제
OS/tdir] sed '/purpose/d' sed_test >
set_out # sed 처리 결과를 sed_out 으로
저장
OS/tdir] cat set_out
OS/tdir] sed '/purpose/p'
sed_test
# 패턴이 포함된 라인이 두번 출력(print)된다.
OS/tdir] sed -n '/purpose/p'
sed_test # 패턴이 포함된 라인만 출력된다.
OS/tdir] sed 's/$/ Oracle/'
sed_test # 각 라인의 마지막에 원하는 글자 추가
OS/tdir] sed 's/
*/#/g'
sed_test
# space를 찾아서 #기호로 변환한다.
OS/tdir] sed 's/
*/-/g'
sed_test
# space를 찾아서 -기호로 변환한다.
# * 기호 앞에 space가 두개라는 점에 유의
OS/tdir] # 한번에 여러 가지 편집 수행
OS/tdir] sed -e
's/database/DATABASE/g' -e
's/information/INFORMATION/g' sed_test
========================================================================================
▒ awk : 패턴 검색과 처리를 위한 언어
=> 명령어의 이름은 개발자인 Alfred V. Aho, Peter J. Weinberger, Brian W.
Kernighan 3인의
머리글자를 사용해서 만든 것이다.
awk '{ action}' filename
OS/tdir] ls -l | awk '{print
$0}'
# 전체 필드가 모두 나타나도록...
drwxr-xr-x 2 prof9i4
dba 512 4월
25일 15:44 a_dir
drwxr-xr-x 2
prof9i4 dba
512 4월 18일 23:53 b_dir
$1
$2 $3 $4
$5 $6 $7 $8 $9
$0
OS/tdir] ls -l | awk '{print
$1}'
# 1번 필드만 나타도록...
OS/tdir] ls -l | awk '{print $1,
$9}'
# 1번과 9번 필드만 나타나도록...
OS/tdir] ls -l | awk '{print $3 "t" $4 "t"
$9}'
# Tab 키가 적용된 결과...
OS/tdir] ls -lt | awk '{print $9, "is using", $5,
"bytes"}' # text 추가
OS/tdir] ls -lt | awk '$5 <=
200 {print $0}' # 5번 필드가 200 이하일 경우 출력