Post

파일 검색 도구 정리: Ag, Ack & Grep

1. Ag (The Silver Searcher)

  • 특징: 빠른 코드/텍스트 검색에 최적화, grep보다 속도 빠름
  • 설치:
1
sudo apt install silversearcher-ag
  • 기본 사용법:
1
ag [옵션] PATTERN [경로]
  • 예제:
1
ag -i "hello world" .
  • 주요 옵션:
옵션설명
-i대소문자 구분 없이 검색
-w단어 단위 검색
-Q정규식 사용 안함 (문자열 검색)
-C n검색 결과 전후 n줄 출력
-A n검색 결과 뒤 n줄 출력
-B n검색 결과 앞 n줄 출력
-G파일 이름 패턴 검색
-g파일 이름 패턴 검색
-l검색된 파일 이름만 출력
-L검색되지 않은 파일 이름만 출력

2. Ack

  • 특징: Perl 기반, grep보다 코드 검색에 친화적, 기본적으로 특정 확장자 파일 제외 가능
  • 설치:
1
sudo apt install ack
  • 기본 사용법:
1
ack [옵션] PATTERN [경로]
  • 예제:
1
ack -i "function_name" src/
  • 주요 옵션:
옵션설명
-i대소문자 구분 없이 검색
-w단어 단위 검색
-Q정규식 사용 안함
-C n검색 결과 전후 n줄 출력
-A n검색 결과 뒤 n줄 출력
-B n검색 결과 앞 n줄 출력
-l검색된 파일 이름만 출력
-L검색되지 않은 파일 이름만 출력
–type=[type]특정 언어/파일 타입만 검색

3. grep

  • 특징: 전통적인 텍스트 검색 도구, POSIX 정규식 기반
  • 기본 사용법:
1
grep [옵션] PATTERN [파일명]
  • 예제:
1
grep 'error' file.txt
  • 자주 쓰는 옵션:
옵션설명
-c일치하는 행 수 출력
-i대소문자 구분 없이 검색
-v일치하지 않는 행만 출력
-n행 번호와 함께 출력
-l패턴이 포함된 파일 이름만 출력
-w단어 단위 일치
-x라인 전체와 일치
-r하위 디렉토리 포함 검색
-m N최대 검색 결과 제한
-E확장 정규식 사용
-F문자열 검색 (정규식 무시)
  • grep 종류:
명령어설명
grep기본 grep (POSIX 정규식)
egrepgrep -E / grep –extended-regexp (확장 정규표현식 사용)
fgrepgrep -F / grep –fixed-string (정규식 무시)

4. Ag vs Ack vs Grep 비교

특징AgAckGrep
속도3~5배 빠름2~3배 빠름느림
정규식PCREPerlPOSIX
기본 옵션-i, -w, -Q-i, -w, -Q-i, -w
파일 이름 검색-G, -g-G, -g-r
파일 이름 제외-L-L-r
파일 이름만 출력-l-l-l

5. 자주 쓰는 예

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 실시간 로그에서 특정 IP 검색
tail -f mylog.log | grep 192.168.15.86

# 특정 파일에서 여러 문자열 검색
grep 'Apple' mylog.txt | grep 'Banana'

# 결과를 파일로 저장
grep -n 'Apple' mylog.txt > result.txt

# ack로 특정 언어 파일에서 함수 검색
ack 'function_name' --type=python src/

# ag로 특정 문자열 빠르게 검색
ag -i "TODO" .

파일 검색 도구 선택 가이드: Ag vs Ack vs Grep

상황 / 용도Ag (The Silver Searcher)AckGrep
대규모 코드 검색✅ 매우 빠름, .gitignore 자동 무시⚪ 빠름, .gitignore 무시 가능❌ 느림, 수동 옵션 필요
작은 텍스트/로그 파일⚪ 사용 가능⚪ 사용 가능✅ 기본, 설치 불필요
시스템 환경 / 최소 환경⚪ 설치 필요⚪ 설치 필요✅ 항상 있음
정규 표현식 활용✅ PCRE 지원✅ Perl 정규식 지원✅ POSIX
파일 타입 제한 검색--type 옵션, 특정 확장자 검색--type 옵션⚪ 하위 디렉토리 + grep 명령 조합 필요
실시간 로그 검색✅ tail -f + ag⚪ 가능하지만 느림✅ tail -f + grep
검색 결과 색상 하이라이트✅ 기본 지원✅ 기본 지원⚪ -G 옵션 필요
설치 필요 여부필요 (apt install silversearcher-ag)필요 (apt install ack)대부분 기본 설치됨
추천 환경개발 환경, 코드 프로젝트, 대규모 저장소코드 프로젝트, Perl 기반 환경서버, 스크립트, 최소 환경

간단 결론

  1. Ag: 요즘 개발자 기준 표준 선택

    • 빠르고, 편리하며 대규모 코드 검색 최적화
    • .gitignore 자동 무시, 파일 타입 지정, 색상 지원
  2. Ack: 특별한 이유가 있거나 Perl 친화적 환경에서 사용

    • ag 대비 조금 느림
  3. Grep: 시스템 기본 도구

    • 설치 필요 없음
    • 작은 텍스트 파일, 로그, 서버 환경에서 안전하게 사용

This post is licensed under CC BY 4.0 by the author.