기록

[GPT가 알려주는] 리눅스 명령어 4종 (grep, find, sed, awk) 본문

잡동사니/GPT가 알려주는

[GPT가 알려주는] 리눅스 명령어 4종 (grep, find, sed, awk)

heylo 2025. 11. 13. 10:07

난 지금까지 grep만 사용해봤음

 

좋다 이 주제 😆
리눅스 네 친구: grep, find, sed, awk 한 번에 정리해줄게.
(약자/이름 뜻 + 역할 + 예시까지!)


1. grep — global regular expression print

  • 이름 뜻
    • 원래 ed 편집기에서 쓰던 명령 g/re/p
      • g : global (전체에서)
      • re : regular expression (정규표현식)
      • p : print (찍어라)
    • 이게 합쳐져서 grep 이 된 거라, 보통
      global regular expression print라고 많이 설명해.
  • 역할
    • “이 문자열(또는 패턴)이 들어있는 줄만 골라줘”
    • 파일/입력 내용 중에서 패턴 매칭되는 줄만 필터링하는 도구
  • 예시
  • # 파일들 안에서 PF_CAN 찾기 grep -R "PF_CAN" . # 줄 번호까지 같이 grep -Rn "IsInitDone" . # 대소문자 구분 없이 grep -Ri "vcan" .

2. find — 그냥 “찾다(find)”라는 뜻 그대로

  • 이름 뜻
    • 약자 아님. 진짜 문자 그대로 “find = 찾아라” 야.
  • 역할
    • 디렉터리 트리를 타고 내려가면서:
      • 파일 이름, 크기, 수정 시간, 타입(디렉터리/일반파일/링크…) 등으로 파일을 검색하는 도구
    • grep은 "파일 안의 내용"을 찾는 느낌,
      find는 "파일 자체"를 찾는 느낌.
  • 예시
  • # 현재 디렉터리부터 .c 파일 전부 찾기 find . -name "*.c" # 이름에 init.tcc 들어가는 파일 찾기 find . -name "*init.tcc*" # 크기가 10MB 이상인 파일 find . -size +10M # 찾은 .o 파일들 전부 삭제 find . -name "*.o" -delete # 찾은 rc 파일들에서 PF_CAN 문자열 검색 (find + grep 콜라보) find . -name "*.rc" -exec grep -n "PF_CAN" {} \;

3. sed — stream editor

  • 이름 뜻
    • stream editor → 줄여서 sed
    • “스트림 편집기”
      → 파일/입력 내용을 통째로 여는 게 아니라, 줄 단위로 흘려보내면서 수정
  • 역할
    • 텍스트를 자동으로 치환, 삭제, 추가하는 간단 편집기
    • “한 줄씩 읽어서 규칙에 맞게 바꾸고 흘려보내는 필터” 느낌
  • 대표용도
    • 문자열 바꾸기(치환)
    • 특정 줄 삭제
    • 간단한 전처리
  • 예시
  • # 파일 내용에서 PF_CAN -> CAN_STACK 으로 바꾸기 (결과만 출력) sed 's/PF_CAN/CAN_STACK/g' init.tcc807x.rc # 바로 파일에 적용 (-i) sed -i 's/PF_CAN=OFF/PF_CAN=ON/' init.tcc807x.rc # 주석(#로 시작하는 줄) 제거 sed '/^#/d' init.tcc807x.rc # 1~10번 줄만 출력 sed -n '1,10p' init.tcc807x.rc

4. awk — Aho, Weinberger, Kernighan

  • 이름 뜻
    • 세 사람 이름 앞글자 합친 것:
      • Aho
      • Weinberger
      • Kernighan
        → AWK
  • 역할
    • 텍스트 처리용 미니 프로그래밍 언어
    • 특히 “공백/구분자 기준으로 나뉜 열(column) 데이터” 처리에 최강
    • 파싱 + 계산 + 포맷팅 다 됨
      → 로그, CSV 간단 통계, 보고서 출력 같은 데 아주 좋음.
  • 기본 구조 느낌
  • awk '패턴 { 액션 }' 파일
  • 자주 쓰는 예시
  • # ifconfig 출력에서 인터페이스 이름만 뽑기 (첫 번째 필드) ifconfig | awk '{print $1}' # 공백으로 나뉜 파일에서 2번째, 5번째 열만 뽑기 awk '{print $2, $5}' data.txt # 3번째 열의 합계 구하기 awk '{sum += $3} END {print sum}' data.txt # 콜론(:) 기준으로 나뉜 /etc/passwd에서 username만 awk -F: '{print $1}' /etc/passwd

네 친구 정리 한 방에

  • grep (global regular expression print)
    파일 내용 중에서 “이 패턴이 들어간 줄만 골라줘”
  • find (그냥 find = 찾다)
    디스크/디렉터리에서 조건에 맞는 파일을 찾아줘
  • sed (stream editor)
    텍스트를 자동으로 치환/삭제/편집하는 필터형 편집기
  • awk (Aho, Weinberger, Kernighan)
    열(column) 기반 텍스트를 다루는 미니 프로그래밍 언어

원하면 이렇게도 정리해줄 수 있어:

  • "내용을 찾고 싶다" → grep
  • "파일 자체를 찾고 싶다" → find
  • "내용을 규칙적으로 좀 바꾸고 싶다" → sed
  • "내용을 열 단위로 파싱해서 계산/통계 내고 싶다" → awk

이 네 개만 손에 익어도
리눅스/임베디드 디버깅 속도 x10 배 느낌 날 거야 😎

원하면 다음 단계로

  • find + xargs + grep 콤보
  • awk로 log 통계 내는 예제
    같은 거도 만들어 줄게.