unix와 linux에서 기본적으로 지원되는 명령어 중에 awk가 있다. 이 awk는 무척이나 강력한 기능을 갖고 있는 파일 핸들링 및 문자열 처리 능력을 갖고 있는데 제목과 같이 설정파일에서 특정 옵션값을 검사하고 조건과 비교하여 변경하여 저장할 때 유용하게 사용할 수 있다.
#!/usr/bin/ksh
# cat 명령으로 login.cfg를 출력하여 awk의 표준입력으로 보낸다.
# 만약 필드의 구분자가 : 라면 awk -F: ‘{ 와 같이 -F 옵션으로 필드 구분자를 지정할 수 있다.
cat /etc/security/login.cfg | awk ‘{
# 만약 login.cfg의 각라인에서 첫번째 필드($1)의 값이 auth_type 이면
if ($1 == “auth_type”) {
print “auth_type = PAM_AUTH”
# auth_type 옵션을 PAM_AUTH로 설정하는 문자열로 바꾸어 출력한다.
} else {
# 만약 auth_type이 아니면 원본라인을 그대로 출력한다. ($0)
print $0
}
# 새파일을 login.cfg.new로 저장한다.
# AIX에서 테스트 되었습니다.
}’ >> ./login.cfg.new
# 원본 설정파일을 백업한다.
cp /etc/security/login.cfg /etc/security/login.cfg.20101013
# 새파일을 login.cfg로 복사하여 덮어 쓴다.
cp ./login.cfg.new /etc/security/login.cfg