학습 가이드
#20주 실습 커리큘럼

텍스트 처리 2: awk·cut으로 passwd·CSV 다루기

_리눅스 실습 커리큘럼 7/40 · 터미널에 익숙해지기 (4주차)_

grep·sort·uniq 로 줄 단위를 다뤘다면, 이번엔 줄 안의 '열' 단위입니다. /etc/passwd 는 콜론, CSV 는 쉼표로 나뉘어 있습니다. 필드 단위로 열을 뽑고 조건을 거는 awk 와 cut 을 익힙니다.

awk·cut 필드 추출, 왜 필요한가

  • 로그인 가능한 계정만 골라내기, 활성 서비스만 뽑기 같은 일이 한 줄이 됩니다.
  • 스프레드시트 없이 터미널에서 데이터를 다룰 수 있습니다.
  • LPIC-1·리눅스마스터 1급이 awk 구분자·필드 참조를 실기로 다룹니다.

이번 편에서 익힐 것

  1. 단순 열 추출 — cut -d: -f1
  2. 구분자와 필드 — awk -F: '{print $1}'
  3. 조건 걸기 — awk -F: '$7=="/bin/bash"'
  4. 헤더 제외 — NR>1
  5. 그룹별 건수 — 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 -->

댓글 0

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