BAGE 2010. 8. 2. 16:35
sed: 비대화형 모드의 텍스트 파일 에디터
awk: C형태의 문법을 갖는 필드 단위의 패턴 처리 언어

정규표현식사용, 기본입출력은 표준입출력사용

sed

[주소-범위]/p
print

[주소-범위]/d
delete

s/pattern1/pattern2/
한 줄에서 처음 나타나는 pattern1을 pattern2로 치환

[주소-범위]/s/pattern1/pattern2/
주소-범위에 대해 한 줄에 처음 나타나는 pattern1을 pattern2로 치환

[주소-범위]/y/pattern1/pattern2/
주소-범위에 대해 pattern1을 pattern2로 바꿈 (tr과 동일)

g
입력의 일치하는 각 줄에서 발생하는 모든 패턴에 대해 동작

sed -e '/^$/d'

sed -n '/xzy/p'

8d 입력의 8번째 줄을 지워라.
/^$/d 빈 줄을 모두 지워라.
1,/^$/d 첫 줄부터 처음 나타나는 빈 줄까지 지워라.
/Jones/p "Jones"를 포함하는 줄만 출력하라(-n 옵션을 써서).
s/Windows/Linux/ 입력의 각 줄에서 처음 나오는 "Windows"를 "Linux"로 치환하라.
s/BSOD/stability/g 입력의 각 줄에서 "BSOD"가 나올 때 마다 "stability"로 치환하라.
s/ *$// 모든 줄의 끝에 나오는 빈 칸을 지워라.
s/00*/0/g 연속적인 모든 0을 하나의 0으로 압축하라.
/GUI/d "GUI"를 포함하는 모든 줄을 지워라.
s/GUI//g "GUI"가 나오는 줄에서 "GUI"만 지워라.


awk

awk는 입력된 각 줄을 필드로 나눔. 기본값으로 빌드는 공백문자로 구분된 연속 문자로 구분하나 옵션을 달리할 수 있음
awk는 구조화된 텍스트 파일, 특히 열과 행으로 나뉜 테이블 처리에 이상적 도구가 됨

쉘 스크립트에서 awk는 '{ }' 로 묶음

awk '{print $3}'
세번째 필드를 표준출력으로 출력

awk '{print $1 $5 $6}'
1, 5, 6번째 필드 출력

{ total += ${a} }
total출력을 위해 END 를 사용해 전체 처리과정 마침
END {print total}

END의 짝인 BEGIN은 awk가 입력 처리전 실행할 코드 블럭 앞에 배치