_리눅스 실습 커리큘럼 7/40 · 터미널에 익숙해지기 (4주차)_
grep·sort·uniq 로 줄 단위를 다뤘다면, 이번엔 줄 안의 '열' 단위입니다. /etc/passwd 는 콜론, CSV 는 쉼표로 나뉘어 있습니다. 필드 단위로 열을 뽑고 조건을 거는 awk 와 cut 을 익힙니다.
awk·cut 필드 추출, 왜 필요한가
- 로그인 가능한 계정만 골라내기, 활성 서비스만 뽑기 같은 일이 한 줄이 됩니다.
- 스프레드시트 없이 터미널에서 데이터를 다룰 수 있습니다.
- LPIC-1·리눅스마스터 1급이 awk 구분자·필드 참조를 실기로 다룹니다.
이번 편에서 익힐 것
- 단순 열 추출 —
cut -d: -f1 - 구분자와 필드 —
awk -F: '{print $1}' - 조건 걸기 —
awk -F: '$7=="/bin/bash"' - 헤더 제외 —
NR>1 - 그룹별 건수 — awk 배열
awk·cut 필드 추출 핵심 명령어
cut -d: -f1 /etc/passwd # 계정 이름만
cut -d: -f1,7 /etc/passwd # 이름과 셸
awk -F: '$7=="/bin/bash" {print $1}' /etc/passwd # 셸이 bash 인 계정
awk -F: '$7 !~ /nologin|false/ {print $1}' /etc/passwd # 로그인 가능한 계정
awk -F, 'NR>1 && $3=="active" {print $1}' svc.csv # 헤더 제외, 3열이 active
ls | awk -F. '{c[$NF]++} END{for(e in c) print e, c[e]}' # 확장자별 개수
- passwd 의 7번째 필드가 로그인 셸입니다.
/sbin/nologin·/bin/false는 로그인 불가. $NF는 마지막 필드,NR은 현재 줄 번호입니다.
awk·cut 필드 추출 자주 하는 실수
- "bash 사용자"와 "nologin 이 아닌 사용자"를 혼동 — 결과가 다릅니다. 지문을 정확히.
- CSV 헤더를 결과에 포함 —
NR>1을 빼먹은 경우. - 출력 형식(열 순서·구분자)이 지문과 다름 —
print $1":"$7처럼 직접 조립하세요.
awk·cut 필드 추출 실습 문제
- passwd 형식 파일에서 로그인 셸 사용자 추출하기
- 로그인 가능한 사용자 목록 만들기
- 확장자별 파일 수 요약하기
- CSV에서 활성 서비스 목록 만들기
다음 편
다음 편은 sed 치환과 파일 무결성 확인 입니다. 화·금요일에 이어집니다.
<!-- publish_key:linux-path-20w-p07-post -->

아직 댓글이 없습니다. 궁금한 점이나 풀이 경험을 남겨 보세요.