기록
[GPT가 알려주는] 리눅스 명령어 4종 (grep, find, sed, awk) 본문
난 지금까지 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라고 많이 설명해.
- 원래 ed 편집기에서 쓰던 명령 g/re/p
- 역할
- “이 문자열(또는 패턴)이 들어있는 줄만 골라줘”
- 파일/입력 내용 중에서 패턴 매칭되는 줄만 필터링하는 도구
- 예시
- # 파일들 안에서 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 통계 내는 예제
같은 거도 만들어 줄게.
'잡동사니 > GPT가 알려주는' 카테고리의 다른 글
| [GPT가 알려주는] 자(字) 란 무엇일까? (0) | 2025.11.17 |
|---|---|
| [GPT가 알려주는] CI/CD하면 버그 있는 커밋 생성 시 어떻게 될까? (0) | 2025.11.13 |
| [GPT가 알려주는] 컴파일, 링크, 실행파일, 바이너리, 이미지 (0) | 2025.11.13 |
| [GPT가 알려주는] 인터페이스란? (0) | 2025.11.12 |
| [GPT가 알려주는] fastboot란? (0) | 2025.11.12 |