공든탑앱 열기

sed·awk 기초

리눅스마스터 2급 · 기본 명령어 · 약 11분

쉽게 말하면

sed는 글 파일 전체에 '찾아 바꾸기'를 한 번에 거는 도구이고, awk는 표처럼 생긴 글에서 원하는 칸만 뽑거나 계산하는 도구예요. 보통 원본은 그대로 두고 결과만 화면에 보여 줘요.

시험용 정의

sed(stream editor)는 입력을 한 줄씩 읽으며 치환·삭제·출력 같은 편집을 하는 비대화형 편집기다. awk는 줄을 칸(필드)으로 나눠 조건에 맞는 줄의 원하는 칸을 뽑고 계산하는 패턴 처리 언어다. 이름 awk는 만든 세 사람 Aho·Weinberger·Kernighan의 성 첫 글자다.

비유로 이해하기

sed는 문서 전체에 "찾아 바꾸기"를 거는 교정기, awk는 표에서 "영업부인 사람의 이름 칸만" 골라 적는 사무원이다.

시험에 이렇게 나와요

1차 출제기준 · 공개 기출 없음

확인 문제

Q1. sed 's/kim/KIM/' names.txt를 실행하면 원본 파일 names.txt는?

  1. 사본 names.txt.bak이 생긴다
  2. kim이 KIM으로 바뀌어 저장된다
  3. 삭제된다
  4. 바뀌지 않는다. 바뀐 결과가 화면에만 나온다
정답 보기

4번 바뀌지 않는다. 바뀐 결과가 화면에만 나온다

sed는 기본적으로 결과를 표준 출력으로만 내보내고 원본은 그대로 둔다. 파일 자체를 고치려면 -i(in-place) 옵션을 쓰거나 결과를 다른 파일로 리다이렉션한다.

Q2. 파일 전체의 cat을 dog로 모두 바꿔 원본을 수정하는 명령은?

  1. sed -i 's/cat/dog/g' f
  2. sed 's/cat/dog/' f
  3. sed -n 's/cat/dog/g' f
  4. sed 's/cat/dog/g' f
정답 보기

1번 sed -i 's/cat/dog/g' f

-i(원본 수정) + g(모두).

Q3. awk -F: '{print $1}' /etc/passwd의 결과는?

  1. 사용자 이름 목록
  2. 셸 목록
  3. UID 목록
  4. 홈 디렉터리 목록
정답 보기

1번 사용자 이름 목록

passwd의 1번째 칸 = 사용자 이름.

Q4. awk에서 현재 줄 번호를 뜻하는 변수는?

  1. FS
  2. NR
  3. NF
  4. $0
정답 보기

2번 NR

NR(Number of Record). NF는 칸 수.

헷갈리기 쉬운 O·X

sed는 옵션 없이 실행해도 원본 파일을 수정한다.

정답 보기

X 결과만 출력. 원본 수정은 -i.

awk에서 $0은 줄 전체를 뜻한다.

정답 보기

O 맞는 설명이다.

sed 's/a/b/'는 한 줄에 a가 여러 번 있으면 모두 바꾼다.

정답 보기

X g가 없으면 첫 번째만.

함께 보면 좋은 개념