<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://devcafe.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=Linux_egrep_%EB%AA%85%EB%A0%B9%EC%96%B4_%EA%B3%A0%EA%B8%89</id>
	<title>Linux egrep 명령어 고급 - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://devcafe.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=Linux_egrep_%EB%AA%85%EB%A0%B9%EC%96%B4_%EA%B3%A0%EA%B8%89"/>
	<link rel="alternate" type="text/html" href="https://devcafe.co.kr/w/index.php?title=Linux_egrep_%EB%AA%85%EB%A0%B9%EC%96%B4_%EA%B3%A0%EA%B8%89&amp;action=history"/>
	<updated>2026-04-04T05:49:13Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://devcafe.co.kr/w/index.php?title=Linux_egrep_%EB%AA%85%EB%A0%B9%EC%96%B4_%EA%B3%A0%EA%B8%89&amp;diff=2305&amp;oldid=prev</id>
		<title>Devcafe: 새 문서: = egrep 고급 활용 및 관련 명령어 =  == egrep 고급 패턴 매칭 ==  === 복합 조건 검색 ===  &lt;pre&gt; # 날짜 범위 검색 (2023년 12월) egrep &#039;^2023-12-(0[1-9]|[12][0-9]|3[01])&#039; /var/log/application.log  # 시간대별 필터링 (오전 9시-11시) egrep &#039; (09|10|11):[0-5][0-9]:[0-5][0-9] &#039; /var/log/syslog  # 특정 사용자의 특정 액션 egrep &#039;user:(admin|root|operator).*action:(login|logout|delete)&#039; audit.log &lt;/pre&gt;  === 네트워크 관련 패턴 ===...</title>
		<link rel="alternate" type="text/html" href="https://devcafe.co.kr/w/index.php?title=Linux_egrep_%EB%AA%85%EB%A0%B9%EC%96%B4_%EA%B3%A0%EA%B8%89&amp;diff=2305&amp;oldid=prev"/>
		<updated>2025-09-12T00:42:47Z</updated>

		<summary type="html">&lt;p&gt;새 문서: = egrep 고급 활용 및 관련 명령어 =  == egrep 고급 패턴 매칭 ==  === 복합 조건 검색 ===  &amp;lt;pre&amp;gt; # 날짜 범위 검색 (2023년 12월) egrep &amp;#039;^2023-12-(0[1-9]|[12][0-9]|3[01])&amp;#039; /var/log/application.log  # 시간대별 필터링 (오전 9시-11시) egrep &amp;#039; (09|10|11):[0-5][0-9]:[0-5][0-9] &amp;#039; /var/log/syslog  # 특정 사용자의 특정 액션 egrep &amp;#039;user:(admin|root|operator).*action:(login|logout|delete)&amp;#039; audit.log &amp;lt;/pre&amp;gt;  === 네트워크 관련 패턴 ===...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= egrep 고급 활용 및 관련 명령어 =&lt;br /&gt;
&lt;br /&gt;
== egrep 고급 패턴 매칭 ==&lt;br /&gt;
&lt;br /&gt;
=== 복합 조건 검색 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# 날짜 범위 검색 (2023년 12월)&lt;br /&gt;
egrep &amp;#039;^2023-12-(0[1-9]|[12][0-9]|3[01])&amp;#039; /var/log/application.log&lt;br /&gt;
&lt;br /&gt;
# 시간대별 필터링 (오전 9시-11시)&lt;br /&gt;
egrep &amp;#039; (09|10|11):[0-5][0-9]:[0-5][0-9] &amp;#039; /var/log/syslog&lt;br /&gt;
&lt;br /&gt;
# 특정 사용자의 특정 액션&lt;br /&gt;
egrep &amp;#039;user:(admin|root|operator).*action:(login|logout|delete)&amp;#039; audit.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 네트워크 관련 패턴 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# MAC 주소 검색&lt;br /&gt;
egrep &amp;#039;([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}&amp;#039; network.log&lt;br /&gt;
&lt;br /&gt;
# 포트 번호 (1-65535)&lt;br /&gt;
egrep &amp;#039;:([1-9]|[1-9][0-9]|[1-9][0-9]{2}|[1-9][0-9]{3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])&amp;#039; netstat.txt&lt;br /&gt;
&lt;br /&gt;
# 사설 IP 대역&lt;br /&gt;
egrep &amp;#039;(10\.|172\.(1[6-9]|2[0-9]|3[01])\.|192\.168\.)&amp;#039; network_scan.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 로그 레벨과 타임스탬프 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Syslog 표준 우선순위&lt;br /&gt;
egrep &amp;#039;\[(DEBUG|INFO|NOTICE|WARNING|ERR|CRIT|ALERT|EMERG)\]&amp;#039; system.log&lt;br /&gt;
&lt;br /&gt;
# ISO 8601 날짜 형식&lt;br /&gt;
egrep &amp;#039;[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\.[0-9]+)?Z?&amp;#039; iso_logs.log&lt;br /&gt;
&lt;br /&gt;
# Apache 로그 날짜 형식&lt;br /&gt;
egrep &amp;#039;\[[0-9]{2}/(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/[0-9]{4}:[0-9]{2}:[0-9]{2}:[0-9]{2} [+-][0-9]{4}\]&amp;#039; apache_access.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== grep 계열 명령어 비교 ==&lt;br /&gt;
&lt;br /&gt;
=== 각 명령어의 특성 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 명령어 !! 정규식 지원 !! 성능 !! 메모리 사용 !! 적합한 상황&lt;br /&gt;
|-&lt;br /&gt;
| grep || BRE (Basic) || 보통 || 낮음 || 일반적인 검색&lt;br /&gt;
|-&lt;br /&gt;
| egrep || ERE (Extended) || 보통 || 중간 || 복잡한 패턴&lt;br /&gt;
|-&lt;br /&gt;
| fgrep || 없음 (문자열만) || 매우 빠름 || 낮음 || 고정 문자열 대량 검색&lt;br /&gt;
|-&lt;br /&gt;
| pgrep || BRE || 빠름 || 낮음 || 프로세스 이름 검색&lt;br /&gt;
|-&lt;br /&gt;
| zgrep || BRE || 느림 || 높음 || 압축 파일 검색&lt;br /&gt;
|-&lt;br /&gt;
| zegrep || ERE || 느림 || 높음 || 압축 파일 복잡 패턴&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 실제 성능 비교 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# 성능 비교 스크립트&lt;br /&gt;
&lt;br /&gt;
LARGE_FILE=&amp;quot;/var/log/huge_log.txt&amp;quot;&lt;br /&gt;
TEST_PATTERN=&amp;quot;error|warning|critical&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;=== 성능 비교 테스트 ===&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# fgrep (가장 빠름 - 단순 문자열)&lt;br /&gt;
echo &amp;quot;1. fgrep 테스트:&amp;quot;&lt;br /&gt;
time fgrep &amp;quot;error&amp;quot; $LARGE_FILE &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
# grep -E (egrep과 동일)&lt;br /&gt;
echo &amp;quot;2. grep -E 테스트:&amp;quot;&lt;br /&gt;
time grep -E $TEST_PATTERN $LARGE_FILE &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
# egrep 테스트&lt;br /&gt;
echo &amp;quot;3. egrep 테스트:&amp;quot;  &lt;br /&gt;
time egrep $TEST_PATTERN $LARGE_FILE &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
# 복잡한 패턴으로 egrep&lt;br /&gt;
echo &amp;quot;4. 복잡한 패턴 egrep 테스트:&amp;quot;&lt;br /&gt;
time egrep &amp;#039;(error|warning|critical).*(database|connection|timeout)&amp;#039; $LARGE_FILE &amp;gt; /dev/null&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== zgrep/zegrep 압축 파일 검색 ==&lt;br /&gt;
&lt;br /&gt;
=== 압축 파일 직접 검색 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# .gz 파일에서 검색&lt;br /&gt;
zgrep &amp;#039;error&amp;#039; /var/log/syslog.1.gz&lt;br /&gt;
zegrep &amp;#039;error|warning&amp;#039; /var/log/apache2/access.log.*.gz&lt;br /&gt;
&lt;br /&gt;
# .bz2 파일 검색&lt;br /&gt;
bzgrep &amp;#039;pattern&amp;#039; compressed.log.bz2&lt;br /&gt;
bzegrep &amp;#039;error|critical&amp;#039; log_archive.tar.bz2&lt;br /&gt;
&lt;br /&gt;
# .xz 파일 검색  &lt;br /&gt;
xzgrep &amp;#039;pattern&amp;#039; file.log.xz&lt;br /&gt;
xzegrep &amp;#039;error|warning&amp;#039; archive.log.xz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 로그 로테이션 파일 일괄 검색 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# 현재 + 압축된 로그 모두 검색&lt;br /&gt;
{&lt;br /&gt;
  egrep &amp;#039;error&amp;#039; /var/log/application.log&lt;br /&gt;
  zegrep &amp;#039;error&amp;#039; /var/log/application.log.*.gz&lt;br /&gt;
} | sort -k1,3&lt;br /&gt;
&lt;br /&gt;
# 스크립트로 자동화&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
LOG_BASE=&amp;quot;/var/log/application.log&amp;quot;&lt;br /&gt;
PATTERN=&amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 현재 로그&lt;br /&gt;
if [ -f &amp;quot;$LOG_BASE&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;=== Current log ===&amp;quot;&lt;br /&gt;
    egrep &amp;quot;$PATTERN&amp;quot; &amp;quot;$LOG_BASE&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# 압축된 과거 로그들&lt;br /&gt;
echo &amp;quot;=== Archived logs ===&amp;quot;&lt;br /&gt;
for gz_file in ${LOG_BASE}.*.gz; do&lt;br /&gt;
    if [ -f &amp;quot;$gz_file&amp;quot; ]; then&lt;br /&gt;
        echo &amp;quot;--- $gz_file ---&amp;quot;&lt;br /&gt;
        zegrep &amp;quot;$PATTERN&amp;quot; &amp;quot;$gz_file&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 정규 표현식 고급 테크닉 ==&lt;br /&gt;
&lt;br /&gt;
=== Lookahead/Lookbehind (GNU grep 한정) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Positive lookahead (GNU grep 3.0+에서 제한적 지원)&lt;br /&gt;
# 실제로는 Perl이나 Python의 정규식 엔진에서 주로 사용&lt;br /&gt;
&lt;br /&gt;
# 대신 조건부 매칭으로 구현&lt;br /&gt;
egrep &amp;#039;password.*[0-9]&amp;#039; config.txt  # password 뒤에 숫자가 있는 라인&lt;br /&gt;
&lt;br /&gt;
# 복합 조건 체크&lt;br /&gt;
egrep &amp;#039;^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).*$&amp;#039; passwords.txt  # (지원 제한적)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 문자 클래스 고급 활용 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# POSIX 문자 클래스&lt;br /&gt;
egrep &amp;#039;[[:alpha:]]+@[[:alnum:].-]+\.[[:alpha:]]{2,}&amp;#039; emails.txt&lt;br /&gt;
egrep &amp;#039;[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}&amp;#039; ips.txt&lt;br /&gt;
&lt;br /&gt;
# 유니코드 지원 (locale 설정 필요)&lt;br /&gt;
export LC_ALL=en_US.UTF-8&lt;br /&gt;
egrep &amp;#039;[가-힣]+&amp;#039; korean_text.txt    # 한글 검색&lt;br /&gt;
&lt;br /&gt;
# 특수 문자 클래스&lt;br /&gt;
egrep &amp;#039;[[:space:]]*error[[:space:]]*&amp;#039; log.txt  # 공백으로 둘러싸인 error&lt;br /&gt;
egrep &amp;#039;[[:punct:]]&amp;#039; symbols.txt                # 구두점 문자&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 대용량 데이터 처리 최적화 ==&lt;br /&gt;
&lt;br /&gt;
=== 메모리 효율적 검색 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# mmap 사용으로 메모리 효율성 향상&lt;br /&gt;
egrep --mmap &amp;#039;pattern&amp;#039; huge_file.txt&lt;br /&gt;
&lt;br /&gt;
# 라인 버퍼링으로 실시간 처리&lt;br /&gt;
tail -f /var/log/syslog | egrep --line-buffered &amp;#039;error|warning&amp;#039;&lt;br /&gt;
&lt;br /&gt;
# 병렬 처리&lt;br /&gt;
find /var/log -name &amp;quot;*.log&amp;quot; -print0 | \&lt;br /&gt;
    xargs -0 -P $(nproc) -I {} egrep -l &amp;#039;error&amp;#039; {}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 분산 검색 전략 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# 대용량 로그 분산 검색 스크립트&lt;br /&gt;
&lt;br /&gt;
SEARCH_PATTERN=&amp;quot;$1&amp;quot;&lt;br /&gt;
LOG_DIR=&amp;quot;/var/log&amp;quot;&lt;br /&gt;
TEMP_DIR=&amp;quot;/tmp/search_$$&amp;quot;&lt;br /&gt;
CPU_CORES=$(nproc)&lt;br /&gt;
&lt;br /&gt;
mkdir -p $TEMP_DIR&lt;br /&gt;
&lt;br /&gt;
# 검색할 파일 목록 생성&lt;br /&gt;
find $LOG_DIR -name &amp;quot;*.log&amp;quot; -type f &amp;gt; $TEMP_DIR/file_list.txt&lt;br /&gt;
&lt;br /&gt;
# 파일 목록을 CPU 코어 수만큼 분할&lt;br /&gt;
split -l $(($(wc -l &amp;lt; $TEMP_DIR/file_list.txt) / $CPU_CORES + 1)) \&lt;br /&gt;
    $TEMP_DIR/file_list.txt $TEMP_DIR/chunk_&lt;br /&gt;
&lt;br /&gt;
# 병렬 검색 실행&lt;br /&gt;
for chunk in $TEMP_DIR/chunk_*; do&lt;br /&gt;
    {&lt;br /&gt;
        while read -r file; do&lt;br /&gt;
            echo &amp;quot;=== $file ===&amp;quot;&lt;br /&gt;
            egrep -n &amp;quot;$SEARCH_PATTERN&amp;quot; &amp;quot;$file&amp;quot; 2&amp;gt;/dev/null&lt;br /&gt;
        done &amp;lt; &amp;quot;$chunk&amp;quot;&lt;br /&gt;
    } &amp;gt; &amp;quot;$chunk.result&amp;quot; &amp;amp;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
wait&lt;br /&gt;
&lt;br /&gt;
# 결과 통합&lt;br /&gt;
cat $TEMP_DIR/chunk_*.result &amp;gt; search_results.txt&lt;br /&gt;
rm -rf $TEMP_DIR&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;검색 완료: search_results.txt&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 로그 분석 전용 스크립트 ==&lt;br /&gt;
&lt;br /&gt;
=== 웹서버 로그 종합 분석기 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# 웹서버 로그 종합 분석 스크립트&lt;br /&gt;
&lt;br /&gt;
ACCESS_LOG=&amp;quot;/var/log/apache2/access.log&amp;quot;&lt;br /&gt;
ERROR_LOG=&amp;quot;/var/log/apache2/error.log&amp;quot;&lt;br /&gt;
REPORT_FILE=&amp;quot;/tmp/web_analysis_$(date +%Y%m%d_%H%M%S).html&amp;quot;&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; $REPORT_FILE &amp;lt;&amp;lt; &amp;#039;EOF&amp;#039;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;웹서버 로그 분석 보고서&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;웹서버 로그 분석 보고서&amp;lt;/h1&amp;gt;&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
# 1. HTTP 상태코드 통계&lt;br /&gt;
echo &amp;quot;&amp;lt;h2&amp;gt;HTTP 상태코드 분포&amp;lt;/h2&amp;gt;&amp;lt;pre&amp;gt;&amp;quot; &amp;gt;&amp;gt; $REPORT_FILE&lt;br /&gt;
egrep -o &amp;#039; [0-9]{3} &amp;#039; $ACCESS_LOG | sort | uniq -c | sort -nr &amp;gt;&amp;gt; $REPORT_FILE&lt;br /&gt;
echo &amp;quot;&amp;lt;/pre&amp;gt;&amp;quot; &amp;gt;&amp;gt; $REPORT_FILE&lt;br /&gt;
&lt;br /&gt;
# 2. 가장 많이 접근된 페이지&lt;br /&gt;
echo &amp;quot;&amp;lt;h2&amp;gt;인기 페이지 TOP 20&amp;lt;/h2&amp;gt;&amp;lt;pre&amp;gt;&amp;quot; &amp;gt;&amp;gt; $REPORT_FILE&lt;br /&gt;
egrep -o &amp;#039;&amp;quot;GET [^&amp;quot;]*&amp;quot;&amp;#039; $ACCESS_LOG | sort | uniq -c | sort -nr | head -20 &amp;gt;&amp;gt; $REPORT_FILE&lt;br /&gt;
echo &amp;quot;&amp;lt;/pre&amp;gt;&amp;quot; &amp;gt;&amp;gt; $REPORT_FILE&lt;br /&gt;
&lt;br /&gt;
# 3. IP 주소별 접근 통계&lt;br /&gt;
echo &amp;quot;&amp;lt;h2&amp;gt;IP별 접근 통계 TOP 20&amp;lt;/h2&amp;gt;&amp;lt;pre&amp;gt;&amp;quot; &amp;gt;&amp;gt; $REPORT_FILE&lt;br /&gt;
egrep -o &amp;#039;^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}&amp;#039; $ACCESS_LOG | \&lt;br /&gt;
    sort | uniq -c | sort -nr | head -20 &amp;gt;&amp;gt; $REPORT_FILE&lt;br /&gt;
echo &amp;quot;&amp;lt;/pre&amp;gt;&amp;quot; &amp;gt;&amp;gt; $REPORT_FILE&lt;br /&gt;
&lt;br /&gt;
# 4. 에러 분석&lt;br /&gt;
echo &amp;quot;&amp;lt;h2&amp;gt;에러 로그 분석&amp;lt;/h2&amp;gt;&amp;lt;pre&amp;gt;&amp;quot; &amp;gt;&amp;gt; $REPORT_FILE&lt;br /&gt;
if [ -f $ERROR_LOG ]; then&lt;br /&gt;
    egrep -i &amp;#039;(error|critical|alert)&amp;#039; $ERROR_LOG | tail -50 &amp;gt;&amp;gt; $REPORT_FILE&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;&amp;lt;/pre&amp;gt;&amp;quot; &amp;gt;&amp;gt; $REPORT_FILE&lt;br /&gt;
&lt;br /&gt;
# 5. Bot/Crawler 접근 통계&lt;br /&gt;
echo &amp;quot;&amp;lt;h2&amp;gt;Bot/Crawler 접근 통계&amp;lt;/h2&amp;gt;&amp;lt;pre&amp;gt;&amp;quot; &amp;gt;&amp;gt; $REPORT_FILE&lt;br /&gt;
egrep -i &amp;#039;&amp;quot;[^&amp;quot;]*bot[^&amp;quot;]*&amp;quot;|&amp;quot;[^&amp;quot;]*crawler[^&amp;quot;]*&amp;quot;|&amp;quot;[^&amp;quot;]*spider[^&amp;quot;]*&amp;quot;&amp;#039; $ACCESS_LOG | \&lt;br /&gt;
    egrep -o &amp;#039;&amp;quot;[^&amp;quot;]*&amp;quot;&amp;#039; | sort | uniq -c | sort -nr &amp;gt;&amp;gt; $REPORT_FILE&lt;br /&gt;
echo &amp;quot;&amp;lt;/pre&amp;gt;&amp;quot; &amp;gt;&amp;gt; $REPORT_FILE&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;quot; &amp;gt;&amp;gt; $REPORT_FILE&lt;br /&gt;
echo &amp;quot;분석 완료: $REPORT_FILE&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 시스템 보안 로그 모니터 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# 보안 이벤트 모니터링 스크립트&lt;br /&gt;
&lt;br /&gt;
SECURE_LOG=&amp;quot;/var/log/secure&amp;quot;&lt;br /&gt;
AUTH_LOG=&amp;quot;/var/log/auth.log&amp;quot;&lt;br /&gt;
ALERT_EMAIL=&amp;quot;admin@company.com&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 1. 무차별 대입 공격 탐지&lt;br /&gt;
BRUTE_FORCE=$(egrep &amp;quot;Failed password.*ssh&amp;quot; $SECURE_LOG $AUTH_LOG 2&amp;gt;/dev/null | \&lt;br /&gt;
    egrep -o &amp;#039;[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}&amp;#039; | \&lt;br /&gt;
    sort | uniq -c | awk &amp;#039;$1 &amp;gt; 10 {print $2}&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
if [ ! -z &amp;quot;$BRUTE_FORCE&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;경고: SSH 무차별 대입 공격 감지된 IP들:&amp;quot; &lt;br /&gt;
    echo &amp;quot;$BRUTE_FORCE&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    # 자동 차단 (선택적)&lt;br /&gt;
    # for ip in $BRUTE_FORCE; do&lt;br /&gt;
    #     iptables -A INPUT -s $ip -j DROP&lt;br /&gt;
    # done&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# 2. Root 로그인 모니터링&lt;br /&gt;
ROOT_LOGIN=$(egrep &amp;quot;session opened for user root&amp;quot; $SECURE_LOG $AUTH_LOG 2&amp;gt;/dev/null | tail -10)&lt;br /&gt;
if [ ! -z &amp;quot;$ROOT_LOGIN&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;알림: 최근 root 로그인 기록:&amp;quot;&lt;br /&gt;
    echo &amp;quot;$ROOT_LOGIN&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# 3. 권한 상승 명령어 모니터링&lt;br /&gt;
SUDO_COMMANDS=$(egrep &amp;quot;sudo.*COMMAND&amp;quot; $SECURE_LOG $AUTH_LOG 2&amp;gt;/dev/null | tail -20)&lt;br /&gt;
if [ ! -z &amp;quot;$SUDO_COMMANDS&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;정보: 최근 sudo 명령어 사용 기록:&amp;quot;&lt;br /&gt;
    echo &amp;quot;$SUDO_COMMANDS&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# 4. 새로운 사용자 계정 생성 감지&lt;br /&gt;
NEW_USERS=$(egrep &amp;quot;new user|new group&amp;quot; $SECURE_LOG $AUTH_LOG 2&amp;gt;/dev/null | tail -10)&lt;br /&gt;
if [ ! -z &amp;quot;$NEW_USERS&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;주의: 새로운 사용자/그룹 생성 감지:&amp;quot;&lt;br /&gt;
    echo &amp;quot;$NEW_USERS&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 고급 필터링 기법 ==&lt;br /&gt;
&lt;br /&gt;
=== 시간 기반 로그 필터링 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# 특정 시간 범위의 로그만 추출&lt;br /&gt;
&lt;br /&gt;
LOG_FILE=&amp;quot;$1&amp;quot;&lt;br /&gt;
START_TIME=&amp;quot;$2&amp;quot;  # 예: &amp;quot;2023-12-01 09:00:00&amp;quot;&lt;br /&gt;
END_TIME=&amp;quot;$3&amp;quot;    # 예: &amp;quot;2023-12-01 17:00:00&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# ISO 8601 형식 로그의 경우&lt;br /&gt;
egrep &amp;#039;^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}&amp;#039; &amp;quot;$LOG_FILE&amp;quot; | \&lt;br /&gt;
    awk -v start=&amp;quot;$START_TIME&amp;quot; -v end=&amp;quot;$END_TIME&amp;quot; \&lt;br /&gt;
    &amp;#039;$1 &amp;quot; &amp;quot; $2 &amp;gt;= start &amp;amp;&amp;amp; $1 &amp;quot; &amp;quot; $2 &amp;lt;= end {print}&amp;#039;&lt;br /&gt;
&lt;br /&gt;
# syslog 형식의 경우 (더 복잡한 처리 필요)&lt;br /&gt;
current_year=$(date +%Y)&lt;br /&gt;
egrep &amp;quot;^$(date -d &amp;quot;$START_TIME&amp;quot; &amp;#039;+%b %e %H:%M&amp;#039;)&amp;quot; &amp;quot;$LOG_FILE&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 멀티라인 로그 처리 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Java 스택 트레이스 같은 멀티라인 로그 처리&lt;br /&gt;
egrep -A 10 -B 2 &amp;#039;Exception|Error&amp;#039; application.log&lt;br /&gt;
&lt;br /&gt;
# 트랜잭션 단위로 로그 그룹핑&lt;br /&gt;
egrep &amp;#039;transaction.*start&amp;#039; app.log | while read line; do&lt;br /&gt;
    tx_id=$(echo &amp;quot;$line&amp;quot; | egrep -o &amp;#039;tx_id=[0-9]+&amp;#039;)&lt;br /&gt;
    echo &amp;quot;=== Transaction: $tx_id ===&amp;quot;&lt;br /&gt;
    egrep &amp;quot;$tx_id&amp;quot; app.log&lt;br /&gt;
    echo &amp;quot;&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 성능 튜닝 고급 기법 ==&lt;br /&gt;
&lt;br /&gt;
=== 인덱싱을 활용한 빠른 검색 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# 로그 파일 인덱싱 및 빠른 검색 시스템&lt;br /&gt;
&lt;br /&gt;
LOG_FILE=&amp;quot;$1&amp;quot;&lt;br /&gt;
INDEX_DIR=&amp;quot;/tmp/log_index&amp;quot;&lt;br /&gt;
mkdir -p $INDEX_DIR&lt;br /&gt;
&lt;br /&gt;
# 1. 날짜별 오프셋 인덱스 생성&lt;br /&gt;
awk &amp;#039;{&lt;br /&gt;
    date = substr($0, 1, 10)  # YYYY-MM-DD 부분&lt;br /&gt;
    if (date != prev_date) {&lt;br /&gt;
        if (prev_date != &amp;quot;&amp;quot;) {&lt;br /&gt;
            print prev_date, prev_offset, NR-1 &amp;gt; &amp;quot;&amp;#039;$INDEX_DIR&amp;#039;/date_index.txt&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
        prev_date = date&lt;br /&gt;
        prev_offset = NR&lt;br /&gt;
    }&lt;br /&gt;
} &lt;br /&gt;
END {&lt;br /&gt;
    print prev_date, prev_offset, NR &amp;gt; &amp;quot;&amp;#039;$INDEX_DIR&amp;#039;/date_index.txt&amp;quot;&lt;br /&gt;
}&amp;#039; &amp;quot;$LOG_FILE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 2. 키워드별 라인 번호 인덱스&lt;br /&gt;
egrep -n &amp;#039;error|warning|critical&amp;#039; &amp;quot;$LOG_FILE&amp;quot; | \&lt;br /&gt;
    cut -d: -f1 &amp;gt; &amp;quot;$INDEX_DIR/error_lines.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 3. 빠른 검색 함수&lt;br /&gt;
fast_search() {&lt;br /&gt;
    local pattern=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local target_date=&amp;quot;$2&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    if [ ! -z &amp;quot;$target_date&amp;quot; ]; then&lt;br /&gt;
        # 날짜 범위로 제한된 검색&lt;br /&gt;
        local line_range=$(awk -v date=&amp;quot;$target_date&amp;quot; \&lt;br /&gt;
            &amp;#039;$1 == date {print $2 &amp;quot;,&amp;quot; $3}&amp;#039; &amp;quot;$INDEX_DIR/date_index.txt&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        if [ ! -z &amp;quot;$line_range&amp;quot; ]; then&lt;br /&gt;
            sed -n &amp;quot;${line_range}p&amp;quot; &amp;quot;$LOG_FILE&amp;quot; | egrep &amp;quot;$pattern&amp;quot;&lt;br /&gt;
        fi&lt;br /&gt;
    else&lt;br /&gt;
        # 전체 검색&lt;br /&gt;
        egrep &amp;quot;$pattern&amp;quot; &amp;quot;$LOG_FILE&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
이렇게 egrep의 고급 활용법과 관련 명령어들을 통해 &amp;#039;&amp;#039;&amp;#039;시스템 관리자와 개발자&amp;#039;&amp;#039;&amp;#039;들이 &amp;#039;&amp;#039;&amp;#039;효율적인 로그 분석과 시스템 모니터링&amp;#039;&amp;#039;&amp;#039;을 수행할 수 있습니다.&lt;/div&gt;</summary>
		<author><name>Devcafe</name></author>
	</entry>
</feed>