'Unix/Linux'에 해당되는 글 16건
- 2010.12.16 grep 제외문자열 -v -Ev
- 2010.09.01 (unix)shell script 어제 날짜 구하기
- 2010.09.01 (unix)shell script CASE문 예제
- 2010.09.01 (unix)shell script 예제
- 2010.01.19 [Script]Shell프로그램을 이용한 FTP전송
- 2010.01.13 [Script]쉘 스크립트
- 2010.01.13 [Script]특정문자 변환 - 일괄처리
- 2010.01.13 [Script]특정 문자가 들어가는 문서찾기
- 2010.01.13 [Script]sed 사용법 2
- 2010.01.13 [Script]sed, awk 사용법 2
grep 제외문자열 -v -Ev
grep 제외문자열 -v -Ev
grep에서 특정문자열을 추출하는건 다들 쓰는데 제외하는건 의외로 모르는사람이 많다.
grep Hello a |grep -v apple|grep -v orange| grep -v banana
-v 옵션을 반복하여... 이렇게 쓰는방법이 있고...
grep Hello a |grep -Ev 'apple|orange|banana'
(unix)shell script 어제 날짜 구하기
유닉스 계열중 Solaris, HP, AIX에서는 다음과 같이 하면 어제 날짜를 바로 구할수 있습니다.
TZ=KST+15; UNIX는 Time Zone이라고 해서 지역별 시간대를 가지고 있습니다. 한국은 표준시에 대해서 TZ=KST-9 입니다. 하지만 하루전으로 가기 위해서는 24시간을 더해준답니다. 그래서 KST+15입니다.
DATE=`date +%Y%m%d`
여기서 날짜가 어제 날짜가 구해지는거죠.
echo $DATE
실질적으로 출력해보세요.
위를 간단하게 해보면
따라서 yesterday=`TZ=KST+15; date +%Y%m%d` *주의 : 여기서 `는 명령어 수행을 나타내는 문자로 자판 1번 바로 왼쪽옆에 있는 문자입니다. 아시겠지만 주의하세요.
도움이 되시길 바랍니다.
Linux는 어제 날짜를 구하는 명령어가 따로 있습니다.
출처 : 지식in
============================================================================
오늘 날짜를 구하는 것
date +%Y%m%d
어제 날짜를 구하는 것
date +%Y%m%d -d '-1days'
또는
date +%Y%m%d --date '1 days ago'
쉽다.
물론 man date 보고 하면 좋다.
출처 : http://blog.naver.com/knight76/30022930265
(unix)shell script CASE문 예제
while [ : ]
do
echo
echo -n "Press any key and hit Enter. To stop, enter @ : "
read char
case $char in
"@" ) break;;
[A-Z][A-Z][A-Z] ) echo "uppercase";;
[0-9][0-9][0-9] ) echo "digit";;
[a-z][a-z][a-z] ) echo "lowercase";;
* ) echo "other" ;;
esac
done
exit 0
(unix)shell script 예제
/var/log/messages* 화일에서
aaa 라는 문자열이 들어간 행만 뽑아 화일1로 저장하고
그중 8번째 필드값만 추출하는데 데이타가 겹치는 경우가 있어 (중복된 값은 제거) 하고
화일2로 저장
grep aaa /var/log/messages* >file1
awk '{print $8}' file1 | sort | uniq >file2
두개의 구문을 아래와 같이 한 줄로 실행할 수도 있습니다.
grep aaa /var/log/messages* | awk '{print $8}' | sort | uniq >file2
[Script]Shell프로그램을 이용한 FTP전송
Local서버에서 Remote서버로 다량의 디렉토리와 하위 파일들을 ftp를 이용해서 전송시 쉘프로그램
------------------------------------------------------------------------------------------
ftpFaxPut.sh
------------------------------------------------------------------------------------------
#!/bin/sh
FTP_CMD="/usr/bin/ftp";
FTP_HOST="000.000.000.000";
FTP_USER="user";
FTP_PASS="passwd";
LOCAL_PATH="/data/tmax/tsdms_New/fileupload/fax/prepared";
BACKUP_PATH="/data/tmax/tsdms_New/fileupload/fax/completed";
export FTP_CMD FTP_HOST FTP_USER FTP_PASS LOCAL_PATH
DIRECTORYS=`ls -1 $LOCAL_PATH`
date >> /data/tmax/cronsh/ftp/ftpFaxexcutedate.txt
for temp in $DIRECTORYS
do
if [ ! -f $LOCAL_PATH/$temp ]
then
echo "GET DIRECTORY : $temp";
echo "GET DIRECTORY : $temp" >> /data/tmax/cronsh/ftp/ftpFaxexcutedate.txt
/data/tmax/cronsh/ftp/ftpFaxPutFile.sh $FTP_CMD $FTP_HOST $FTP_USER $FTP_PASS $LOCAL_PATH $temp > /dev/null
fi
done
# File Move after File Transfer
mv $LOCAL_PATH/* $BACKUP_PATH/
exit 0
------------------------------------------------------------------------------------------
ftpFaxPutFile.sh
------------------------------------------------------------------------------------------
#!/bin/sh
$1 -n $2 << EOF
user $3 $4
bi
prompt
mkdir $6
lcd $5/$6
cd $6
mput *
bye
<< EOF
exit 0
참고 : http://blog.naver.com/wpaddle/100094321257
[Script]쉘 스크립트
아주 많은 프로그래머들은 PC 위에서 도는 도스에서 스크립트를 배웠습니다. 기능이 조금 떨어지는 도스 배치 파일 언어로도 꽤 강력한 스크립트나 어플리케이션을 작성할 수도 있지만 그렇게 하려면 아주 해박한 지식을 사용해 해결책을 찾거나 꽁수를 부려야 합니다. 가끔은 오래된 도스용 배치 파일을 유닉스 쉘 스크립트로 변환해서 써야될 경우가 생기지만 이렇게 하는것이 그렇게 어렵지만은 않습니다. 왜냐하면 도스 배치 파일 연산자들이 기능이 동일한 쉘 스크립트 연산자의 서브셋에 불과하기 때문입니다.
표 G-1. 배치 파일 키워드/변수/연산자 와 그에 해당하는 쉘 동의어
배치 파일 연산자 | 쉘 스크립트 동의어 | 뜻 |
---|---|---|
% | $ | 명령어줄 매개변수 접두사 |
/ | - | 명령어 옵션 플래그 |
\ | / | 디렉토리 패스 구분자 |
== | = | (같음) 문자열 비교 테스트 |
!==! | != | (다름) 문자열 비교 테스트 |
| | | | 파이프 |
@ | set +v | 현재 명령어를 에코하지 말 것 |
* | * | 파일명 "와일드 카드" |
> | > | 파일 재지향(덮어 쓰기) |
>> | >> | 파일 재지향(덧붙여 쓰기) |
< | < | 표준입력 재지향 |
%VAR% | $VAR | 환경 변수 |
REM | # | 주석 |
NOT | ! | 뒤에 나오는 테스트 부정 |
NUL | /dev/null | 명령어 출력을 없애기 위한 "블랙홀" |
ECHO | echo | 에코 (Bash 에는 옵션이 많이 있음) |
ECHO. | echo | 빈 줄 에코 |
ECHO OFF | set +v | 다음에 나오는 명령어를 에코하지 말 것 |
FOR %%VAR IN (LIST) DO | for var in [list]; do | "for" 루프 |
:LABEL | 없음 (필요치 않음) | 라벨 |
GOTO | 없음 (대신 함수를 씀) | 스크립트의 다른 곳으로 건너 뜀 |
PAUSE | sleep | 일정 간격을 두고 잠시 대기 |
CHOICE | case 나 select | 메뉴 선택 |
IF | if | if-test |
IF EXIST FILENAME | if [ -e filename ] | 파일이 존재하는지 확인 |
IF !%N==! | if [ -z "$N" ] | 변경가능한 매개변수인 "N"이 없다면 |
CALL | source 나 . (도트 연산자) | 다른 스크립트를 "포함" |
COMMAND /C | source 나 . (도트 연산자) | 다른 스크립트를 "포함"(CALL과 동일) |
SET | export | 환경 변수를 세트 |
SHIFT | shift | 명령어줄 변수 목록을 왼쪽으로 이동(shift) |
SGN | -lt or -gt | (정수) 부호(sign) |
ERRORLEVEL | $? | 종료 상태 |
CON | stdin | "콘솔"(표준입력) |
PRN | /dev/lp0 | (일반적인) 프린터 디바이스 |
LP1 | /dev/lp0 | 첫번째 프린터 디바이스 |
COM1 | /dev/ttyS0 | 첫번째 시리얼 포트 |
배치 파일은 대개 도스 명령어를 갖고 있습니다. 도스용 배치 파일이 쉘 스크립트로 변환되기 위해서는 이 명령어들은 꼭 동일한 유닉스 명령어로 변환되어야 합니다.
표 G-2. 도스 명령어와 동일한 유닉스 명령어
도스 명령어 | 동일한 유닉스 명령어 | 효과 |
---|---|---|
ASSIGN | ln | 파일이나 디렉토리를 링크 |
ATTRIB | chmod | 파일 퍼미션 변경 |
CD | cd | 디렉토리 변경 |
CHDIR | cd | 디렉토리 변경 |
CLS | clear | 스크린 지우기 |
COMP | cmp or diff | 파일 비교 |
COPY | cp | 파일 복사 |
Ctl-C | Ctl-C | 정지(시그널) |
Ctl-Z | Ctl-D | EOF (end-of-file) |
DEL | rm | 파일 삭제 |
DELTREE | rm -rf | 디렉토리의 하위 디렉토리까지 포함해서 삭제 |
DIR | ls -l | 디렉토리 보이기 |
ERASE | rm | 파일 삭제 |
EXIT | exit | 현재 프로세스 종료 |
FC | comm, cmp | 파일 비교 |
FIND | grep | 파일안에서 문자열 찾기 |
MD | mkdir | 디렉토리 생성 |
MKDIR | mkdir | 디렉토리 생성 |
MORE | more | 텍스트 파일 쪽단위(paging) 필터 |
MOVE | mv | 이동 |
PATH | $PATH | 실행파일들의 경로 |
REN | mv | 이름 바꾸기(이동) |
RENAME | mv | 이름 바꾸기(이동) |
RD | rmdir | 디렉토리 삭제 |
RMDIR | rmdir | 디렉토리 삭제 |
SORT | sort | 파일 정렬 |
TIME | date | 시스템 시간 보여주기 |
TYPE | cat | 파일을 표준출력으로 출력 |
XCOPY | cp | (확장) 파일 복사 |
[Script]특정문자 변환 - 일괄처리
#!/bin/sh
src="hack_code..."
src1="<script language=javascript><!-- "
src2=" --></script>"
dst=" "
hack="hack_code.txt"
pattern="*htm*|*.php|*.js"
if [ "$3" = "" ]; then
echo $"{Usage; $0 \"`pwd`\" \"find_string\"}"
else
rm -f $hack
echo "removed $hack"
echo ""
find "$1" -name "*" | egrep "$pattern" | xargs fgrep -l "$2" >> $hack
for i in `cat $hack`;
do
cp -f $i ${i}_bak
replace "$src" "$dst" -- $i
replace "$src1" "$dst" -- $i
replace "$src2" "$dst" -- $i
sed -i '/^$/d' $i #빈줄 삭제
# echo "replaced $i"
done
echo ""
echo "--------------------------------"
echo "created $hack"
echo "completed replacing hack_code!!!"
echo "--------------------------------"
fi
exit;
[출처] http://blog.naver.com/siyang6?Redirect=Log&logNo=30047779296
[Script]특정 문자가 들어가는 문서찾기
-i : 대소문자 구별을 하지 않는다.
-v : pattern 을 포함하지 않는 행만 출력한다.
-n : 행번호를 출력한다.
-l : 파일명만 출력한다.
-c : 패턴과 일치하는 라인의 갯수만 보여준다.
grep : 강력한 패턴 매칭 템플릿을 정의하기 위해 "정규 표현식"을 사용할 수 있다.
egrep [옵션] "패턴|패턴|..." [대상파일들] : 확장된 정규 표현식을 사용하며, 찾아낼 패턴을 여러개 지정할 수 있다. '|'기호는 불린 연산자 "OR"에 해당하므로, 정해진 패턴들에 포함되는 모든 라인을 보여준다.
fgrep [옵션] 패턴 [대상파일들] : 패턴과 정확히 일치하는 것만을 찾아 준다
# 모든 html 문서에서 pattern 이 들어가 있는 파일을 보여준다. find / -name *.html -exec fgrep -l "pattern" {} \; find / -name *.html | egrep -i "pattern" # 모든 html 문서에서 pattern 이 들어가 있는 문자를 보여준다. find / -name *.html -exec fgrep "pattern" {} \; find -name *.htm -exec fgrep -l "today.swf" {} \;
# 모든 html 문서에서 문자열을 변환(replace)한다. find / -name *.html -exec replace "<iframe src=http://www.krvkr.com/wormkr.htm width=0 height=0></iframe>" "<br>" -- {} \; find / -name *.exe # 모든 exe파일을 삭제 find / -name *.exe -exec rm -f {} \; # *_.ini파일을 삭제 find / -name *_.ini -exec rm -f {} \; ### sed 를 이용한 문자 변환 # www. krvkr .com 을 blank로 변환 find / -name *.htm –exec sed –i ‘s/www.krvkr.com/blank/g’ {} \; # www. krvkr. Com 이 들어가는 줄을 삭제 find / -name *.htm –exec sed –i ‘/www.krvkr.com/d’ {} \;
[Script]sed 사용법 2
sed 's/찾는문자열/바꿀문자열/g' 입력파일
이것이 가장 기본적인 사용법이랍니다. 이렇게 하면 앞에서 말했듯이 그 결과는 표준 출력으로 보내집니다. 또한 문자열을 지정할 때, 쉘 스크립트 작성때와 마찬가지로, 쉘에서 특별한 의미로 쓰이는 문자들은 '' 문자를 앞세워서 사용합니다.
.*[]^$
이 문자들이 sed, shell에서 특별한 의미로 쓰임으로 이 문자 자체를 의미하려면, '' 문자를 먼저 사용해야겠지요.
e.g :
sed 's/[J.S. Bach {$ for music}]/[Bach, J.S {$ for music}]/' filename
이게 아니라,
sed 's/[J.S. Bach {$ for music}]/[Bach, J.S {$ for music}]/' filename
여기서 하나 신기한 것은 "찾는 문자열"에서만 이런 것이 적용된다는 것입니다.
"바꿀 문자열"에서도 똑같이 지정하면, 그 지정한 그대로 출력되더군요.
(신기하나? 원래 당연한 것 아닌감? 표준 출력이니까.)
그럼 이것은 무엇일까요?
sed 's//usr/bin//bin/g' filename
"/usr/bin" -> "/bin" 으로 바꾸는 것?
물론 오류가 있는 사용법은 아닙니다. 하지만, 경로명이 길어지면, 알아 보기가 힘들겠지요. 그래서, 경로명을 사용할 때는
sed 's#/usr/bin#/bin#g' filename
이렇게 한답니다.
또한 "Index"라는 문자열은 "색인"으로 바꾸고, "Contents"라는 문자열은 "차례"라는 내용으로 바꾸고 싶다면, sed를 두번 사용하느냐? 이런 멍청한 짓(?) 하는 사람은 없겠지요.
이럴 때는
sed -e 's/Index/색인/g' -e 's/Contents/차례/g' 파일이름
이런 식으로 한답니다. '-e' 옵션은 "또 있다"는 뜻이랍니다.
이 옵션이 빠지면, 첫번째 경우만 처리하고 두번째 경우("차례"로 바꾸는 것)는 무시된다고 하네요.
3. 정규표현식(Regular Expression) 사용하기
모든 찾기가 그러하듯이 여기서도 여전히 정규식이 사용되는군요.
sed 's/^Thu /Thursday/' filename
이건 저도 아네요. 껄껄. '^' 기호는 그줄의 첫칸을 의미하지요.
즉, 줄 첫 칸에만 있는 "Thu" 문자열을 "Thursday"로 바꾸는 경우네요.
그런데, 여기서는 파일 전체를 대상으로 한다는 'g' 문자가 빠졌군요.
왜 빠져도 되는지는 모르겠지만, 아무튼 실행되더군요.
sed 's/ $//' filename
이건 반대로 줄 끝에 있는 공백 문자를 없애는 것입니다.
즉 " $" 문자열을 "" 문자열로. 텍스트 파일에 대한 기본적인 지신이 부족한 사람들에게는 "그게 뭐 어때서?" 하면서 의아해 하겠지만, 엄격히 따지면, " $" 문자열이란, 공백문자랑, 그 다음에 줄 바꿈 문자가 있는 것을 말합니다. 이것을 윗 명령으로 그 공백 문자를 없애는 경우입니다.
과연 이런 게 어디 쓰일까? 회의를 둘 수도 있겠지만, 의외로 필요할 때가 많습니다.
한 예를 들어 awk (요곤 기회 주어지면 다음에 하지요. sed 보다 복잡 하더군요.) 에서 마지막 필드 다음에 줄바꿈 문자가 있어야 되는데, 이렇지 못하고, 공백문자가 있어, 원하는 결과 값을 못 얻어 내는 경우가 있거든요. 이럴 때 유용하게 쓰입니다.
sed 's/^$/이건 빈 줄이다/' filename
줄 첫칸에 줄 바꿈 문자가 있다? 당연히 빈줄이지요. 껄껄.
sed 's/Apr .. ..:..:.. 1980/Apr 1980/g' filename
이런 식으로 많이 사용하지 않았나요? vi 편집기나, grep 명령에서 말입니다.
'.'(점)은 임의한 한 문자를 뜻하지요. 윗 예제는 뭔고하면, "Apr 11 11:09:25 1980" 이런 식으로 (어디서 많이 보았지요?) 된 여러 경우들을 무조건 "Apr 1980"으로 통일하는 경우입니다.
sed 's/[Oo]pen[Ww]in/openwin/g' filename
sed 's/ [A-Z]. / /g' filename
이것도 그럴 것 같은데. " D. " 문자열 같은게, " " 문자열로 바꾸는 것입니다.
sed 's/ [^A-DHM-Z]. / /g' filename
이건 윗 예제와 반대지요. 즉, A,B,C,D,H,M,O,P,Q,R,S,T,U,V,W,Z,Y,Z 문자는 제외한 다른 단일 문자의 경우는 모두 공백문자로.
그 외에도 몇개 더 있는데, 뭐 그다지 중요한 것은 아니네요.
grep나, ls 명령에서 이미 잘 쓰고 있는 것들이니까,
* : 임의의 문자열.
[][^] 등.. 여러 표현식을 섞어서 사용하는 것.
4. sed 안에서도 자체적으로 저장을 한다는군요. (신기하기도해라)
이 말이 무신 말인고 하면, 앞에서 말한 sed의 개념으로 본다면, 단지, 표준 입력으로 입력받아,
표준 출력으로 단순히 변환해서 보내는 역활밖에 하지 않는데, 저장할 여력이 어디 있을까 하는데.....
이런 경우를 생각해 보지요.
"*남자*와 *여자*"라는 정규식에 맞는 문자열에서 공백문자를 두고 서로 바꾸어야할 경우. 지금까지의 개념으로 본다면, 이런 문제는 sed에서 불가능하지요.
먼저 발견되는 첫번째 환경을 저장하고, 다음 두번째 환경이 곧이어 발견되면 그것을 서로 바꾸면 되겠지요.
이렇게 하는 것이 "(" ")" (괄호)입니다.
sed 's/^([A-Z][A-Za-z]*), ([A-Z][A-Za-z]*)/2 1/' filename
이것은 "문자열1, 문자열2" 이런 내용을 "문자열2 문자열1"로 바꾸는 것입니다. 어떻게 1, 2를 서로 바꾸느냐 하면, "바꿀문자열 지정부분에, 2 1 이런식으로 써주면 되지요. 영어 표현 중에, "Lastname, Firstname" 이런 것을 "Firstname Lastname" 이런 식으로 바꾸고자 할 때 유용하게 쓰인답니다.
필요에 따라 입력 파일의 특정 범위 내에서만 문자열 바꾸기를 해야할
경우가 생기는데, 이때는 s 앞에다 그 범위를 지정합니다.
sed '1,20s/foobar/fubar/g' filename
이것은 첫번째 줄부터 20번째 줄까지만 찾아서 바꾸는 것입니다.
sed '/^Aug/s/Mon /Monday /g' filename
이런 식도 가능하다네요. 즉, 줄 처음에 Aug (팔월인가?) 라는 문자열이
있는 그 줄의 Mon 이라는 문자열을 Monday 로 바꾸는 것입니다.
이 반대라면,
sed '/^Aug/!s/Mon /Monday /g' filename
이런 식으로.
또한 조건을 여러게 줄 수도 있습니다.
sed '/^Aug/,/^Oct/s/Mon /Monday /g' filename
어떻게 작동할 지 알겠지요?
지금까지 설명 예로든 것은 모두 바뀌는 부분을 포함해서, 입력된 모든 내용을 다시 표준 출력으로 보여줍니다. 필요에 따라 그 바뀌는 줄에 대해서만 출력해야 할 경우가 생기지요.
sed -n 's/fubar/foobar/gp' filename
이런 식으로 사용하는데, 이때 주의 할 것은 -n 옵션을 사용한다는 것과 끝부분에 g가 아니라, gp라는 것.
5. 파일로 저장된 sed 명령. sed 스크립트.
여러 sed 명령을 계속 사용해야 할 경우는 이 작업을 또 보다 편하게 할 수 없을까? 해서, 생겨난 것이 스크립트인데, 가령,
s/color/colour/g
s/flavor/flavour/g
s/theater/theatre/g
한 파일에 이렇게 입력하고, sample.sed 라는 이름으로 저장한 후, 이것을 사용하려면 다음과 같이 합니다.
sed -f sample.sed filename
그럼 쉘 스크립트에서 실행 프로그램을 지정하는 #! 기호를 사용하면,
#!/usr/bin/sed -f
# This file is named "sample2.sed"
s/color/colour/g
s/flavor/flavour/g
s/theater/theatre/g
이렇게 작성하고, sample2.sed 라는 이름으로 저장한 후,
chmod u+x sample2.sed
./sample2.sed filename
이렇게 바로 하나의 독자적인 스크립트로 사용할 수도 있겠지요.
-----------
이상이 sed 맛보기 내용의 전부입니다.
얼마나 도움이 되었을지 의문이네요.
sed 단독으로는 그리 유용하게 사용되지 못합니다.
이것을 제대로 사용하려면, 결국 유닉스에서의 텍스트 처리 명령들에 대해서 모두 꾀뚤고(?) 있어야 하겠더군요.
아무튼 저는 오늘 sed로 원하는 작업을 할 수 있었습니다.
그 작업은
http://free.xtel.com/~teodeul/hUNIXhelp
라는 URL에서 보여집니다. 껄껄.
다음에 시간나면, awk 맛보기를 올려보지요.
또 시간나면, flex도, 그리고, 기타 textutil 팻키지의 명령들도...
아직까지는 아무래도 유닉스 쪽에서는 텍스트 처리 기능이 유용하게
쓰이나봅니다.
[출처] http://blog.naver.com/siyang6?Redirect=Log&logNo=30021355089
[Script]sed, awk 사용법 2
-n 파일 안에서의 패턴이 발견된 라인 및 라인 번호
-v 패턴이 발견되지 않은 라인
-i 대소구분 무시(ignore)
-l 패턴이 들어있는 파일 이름만
-c 패턴이 들어있는 라인 번호만
#### 줄 관련 명령어와 기능
d 텍스트 줄 삭제 명령
a\ 텍스트 줄 다음에 첨가 명령
i\ 텍스트 줄 앞에 첨가 명령
c\ 텍스트 줄 변경 명령
n 다음 텍스트 줄을 읽는 명령
g 전파일 부분을 치환하는 명령
= 현재 줄 번호를 출력
[/패턴/]= 대응되는 줄의 패턴과 일치하는 각 줄의 번호를 표준 출력
p 패턴 일치되는 줄을 표준 출력
s/패턴/대체패턴/ 플래그 패턴을 대체패턴으로 바꿈. 플래그는 g, p, wfile
y/문자열1/문자열2/ 문자열1과 문자열2를 서로 바꿈
^ : ^패턴 : 패턴으로 시작하는 모든 라인 찾기
$ : 패턴$ : 패턴으로 끝나는 모든 라인 찾기
. : d... : d로 시작하는 4자리 character 찾기
* : [a-d]* : a, b, c, d로 시작하는 character 찾기
[] : [Dd]atabase : Database 또는 database 찾기
[^] : [^D] : D가 나타나지 않는 라인 찾기
# sed '#d' filename : # 라인만 삭제
# sed '$d' filename : 마지막 라인 삭제
# sed '#,$d' filename : # 라인부터 마지막 라인까지 지우기
# sed '#,#d' filename : # 라인부터 # 라인까지 지우기
# sed '1d' sed_test # 1 라인만 삭제
# sed '$d' sed_test # 마지막 라인만 삭제
# sed '/purpose/d' sed_test > set_out # sed 처리 결과를 sed_out 으로 저장
# cat set_out
# sed '/purpose/p' sed_test # 패턴이 포함된 라인이 두번 출력(print)된다.
# sed -n '/purpose/p' sed_test # 패턴이 포함된 라인만 출력된다.
# sed 's/$/ Oracle/' sed_test # 각 라인의 마지막에 원하는 글자 추가
# sed 's/ */#/g' sed_test # space를 찾아서 #기호로 변환한다.
# sed 's/ */-/g' sed_test # space를 찾아서 -기호로 변환한다.
# * 기호 앞에 space가 두개라는 점에 유의
## 한번에 여러 가지 편집 수행
# sed -e 's/database/DATABASE/g' -e 's/information/INFORMATION/g' sed_test
▒ awk : 패턴 검색과 처리를 위한 언어 >> awk '{ action}' filename
# ls -l | awk '{print $0}' # 전체 필드가 모두 나타나도록...
# ls -l | awk '{print $1}' # 1번 필드만 나타도록...
# ls -l | awk '{print $1, $9}' # 1번과 9번 필드만 나타나도록...
# ls -l | awk '{print $3 "\t" $4 "\t" $9}' # Tab 키가 적용된 결과...
# ls -lt | awk '{print $9, "is using", $5, "bytes"}' # text 추가
# ls -lt | awk '$5 <= 200 {print $0}' # 5번 필드가 200 이하일 경우 출력
[출처] http://blog.naver.com/siyang6?Redirect=Log&logNo=30048138641