홈 › 리눅스 명령어 › 09 / 10

sed · awk 한 줄 처리 (치환·필드·집계)

섹션 7진행 0 / 10

6. 연습 문제

문제 1. 상태코드 200만 추출

access.log 에서 상태코드가 200인 줄만 출력하는 명령을 쓰세요.

bash
awk '$8 == 200' access.log

$8 이 상태코드 필드이므로 값이 정확히 200인 줄만 조건에 걸립니다.

문제 2. amount 900 초과만 출력

sales.csv 에서 amount(3번째 필드)가 900 을 넘는 행만 이름과 금액을 출력하세요.

bash
awk -F',' 'NR>1 && $3 > 900 {print $1, $3}' sales.csv

헤더를 건너뛰려고 NR>1 조건을 함께 걸었습니다.

문제 3. 포트 번호를 9090 으로 변경

app.properties 의 server.port 값을 9090 으로 바꾸되 원본은 .bak 으로 남기세요.

bash
sed -i.bak 's/^server.port=.*/server.port=9090/' app.properties

^server.port=.* 로 키 전체 줄을 매치해 값만 통째로 바꿨습니다.

문제 4. 지역별 합계

sales.csv 를 지역별 amount 합계로 집계하는 명령을 쓰세요.

bash
awk -F',' 'NR>1 {a[$2]+=$3} END {for (r in a) print r, a[r]}' sales.csv | sort

배열 a[지역] 에 금액을 누적하고 END 에서 한 번에 출력합니다.

문제 5. 경로별 접속 건수 상위 정렬

access.log 에서 경로별 접속 건수를 많은 순으로 정렬해 출력하는 파이프라인을 쓰세요.

bash
awk '{print $6}' access.log | sort | uniq -c | sort -rn

경로 필드만 뽑아 정렬한 뒤 uniq -c 로 세고 sort -rn 으로 내림차순 정렬합니다.