สอน Regex (Regular Expression) สำหรับ IT Admin 2026 ใช้กับ grep sed awk

Regex คืออะไร? ทำไม IT Admin ต้องรู้?

Regex (Regular Expression) คือรูปแบบ (Pattern) ที่ใช้ค้นหาและจับคู่ข้อความ (Text Matching) สำหรับ IT Admin Regex เป็นเครื่องมือที่ทรงพลังในการ วิเคราะห์ Log, กรองข้อมูล, แก้ไข Config, และ Monitor ระบบ

Regex ใช้ทำอะไรได้บ้าง?

งาน IT Admin ตัวอย่าง เครื่องมือ
ค้นหาใน Log หา Error ทั้งหมดใน syslog grep, journalctl
แก้ไข Config เปลี่ยน IP ในไฟล์ Config ทั้งหมด sed
ดึงข้อมูล ดึง IP, Email, URL จาก Log grep, awk
Monitoring กรอง Alert ตาม Pattern Prometheus, Grafana
Network Analysis กรอง Packet ตาม Pattern Wireshark, tcpdump
Validation ตรวจ IP Format, Email Format Script, Firewall Rules

Regex Basics — พื้นฐาน

Metacharacters (อักขระพิเศษ)

Metacharacter ความหมาย ตัวอย่าง จับคู่กับ
. อักขระใดก็ได้ 1 ตัว c.t cat, cut, c0t
^ เริ่มต้นบรรทัด ^Error Error at line… (ต้นบรรทัด)
$ สิ้นสุดบรรทัด failed$ …login failed (ท้ายบรรทัด)
* ซ้ำ 0 ครั้งขึ้นไป ab*c ac, abc, abbc, abbbc
+ ซ้ำ 1 ครั้งขึ้นไป ab+c abc, abbc (ไม่รวม ac)
? ซ้ำ 0 หรือ 1 ครั้ง colou?r color, colour
| หรือ (OR) cat|dog cat หรือ dog
\ Escape ตัวพิเศษ \. จุด (.) จริง ๆ ไม่ใช่ Metachar

Character Classes (กลุ่มอักขระ)

Character Class ความหมาย ตัวอย่าง
[abc] a หรือ b หรือ c [aeiou] = สระ
[a-z] a ถึง z (พิมพ์เล็ก) [a-zA-Z] = ตัวอักษร
[0-9] ตัวเลข 0-9 [0-9]+ = ตัวเลข
[^abc] ไม่ใช่ a, b, c [^0-9] = ไม่ใช่ตัวเลข
\d ตัวเลข = [0-9] \d{3} = 3 ตัวเลข
\w Word char = [a-zA-Z0-9_] \w+ = คำ
\s Whitespace = [ \t\n] \s+ = ช่องว่าง

Quantifiers (ตัวกำหนดจำนวน)

Quantifier ความหมาย ตัวอย่าง
{n} ซ้ำ n ครั้ง [0-9]{4} = เลข 4 ตัว
{n,} ซ้ำ n ครั้งขึ้นไป [0-9]{2,} = เลข 2 ตัวขึ้นไป
{n,m} ซ้ำ n ถึง m ครั้ง [0-9]{1,3} = เลข 1-3 ตัว

Practical Regex สำหรับ IT Admin

1. จับ IP Address

# IPv4 Address Pattern:
# Basic (จับ IP Format):
[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+

# Strict (ตรวจค่า 0-255):
\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b

# ใช้จริง:
grep -oP '\d+\.\d+\.\d+\.\d+' /var/log/auth.log
# → ดึง IP ทั้งหมดจาก auth.log

2. จับ Email Address

# Email Pattern (Basic):
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}

# ใช้จริง:
grep -oP '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}' mail.log

3. จับ URL

# URL Pattern:
https?://[^\s"<>]+

# ใช้จริง:
grep -oP 'https?://[^\s"<>]+' access.log

4. จับ Date/Time

# ISO Date (2026-04-16):
[0-9]{4}-[0-9]{2}-[0-9]{2}

# Syslog Date (Apr 16 14:30:00):
[A-Z][a-z]{2}\s+[0-9]{1,2}\s+[0-9]{2}:[0-9]{2}:[0-9]{2}

# Apache/Nginx Date ([16/Apr/2026:14:30:00 +0700]):
\[[0-9]{2}/[A-Z][a-z]{2}/[0-9]{4}:[0-9]{2}:[0-9]{2}:[0-9]{2}\s+[+-][0-9]{4}\]

Regex กับ grep — ค้นหาใน Log

# grep Basics:
grep "ERROR" /var/log/syslog            # หา ERROR
grep -i "error" /var/log/syslog         # Case-insensitive
grep -c "ERROR" /var/log/syslog         # นับจำนวน
grep -n "ERROR" /var/log/syslog         # แสดงเลขบรรทัด
grep -v "INFO" /var/log/syslog          # ไม่แสดงบรรทัดที่มี INFO

# grep Extended Regex (-E):
grep -E "ERROR|CRITICAL|FATAL" /var/log/syslog    # หาหลาย Pattern
grep -E "^[0-9]{4}-" /var/log/app.log              # บรรทัดขึ้นต้นด้วยปี

# grep Perl Regex (-P):
grep -oP '\d+\.\d+\.\d+\.\d+' /var/log/auth.log   # ดึง IP

# Practical: หา Failed SSH Login + IP:
grep "Failed password" /var/log/auth.log | grep -oP '\d+\.\d+\.\d+\.\d+' | sort | uniq -c | sort -rn | head -20
# → Top 20 IP ที่ Login ผิด

# หา Error ใน Nginx:
grep -E "\s(5[0-9]{2})\s" /var/log/nginx/access.log
# → หา HTTP 5xx Error

# หา Slow Query (> 1 วินาที):
grep -P 'time:\s*[1-9][0-9]*\.' /var/log/mysql/slow-query.log

# Log ย้อนหลัง 1 ชั่วโมง:
grep "$(date -d '1 hour ago' '+%b %d %H')" /var/log/syslog

Regex กับ sed — Search-Replace ใน Config

# sed Basics:
# sed 's/pattern/replacement/' file
# s = substitute, g = global (ทุกตำแหน่งในบรรทัด)

# เปลี่ยน IP ใน Config:
sed -i 's/192\.168\.1\.100/10.0.0.100/g' /etc/nginx/nginx.conf

# เปลี่ยน Port:
sed -i 's/listen 80;/listen 8080;/g' /etc/nginx/sites-available/default

# Comment Out บรรทัด:
sed -i 's/^PasswordAuthentication yes/#PasswordAuthentication yes/' /etc/ssh/sshd_config

# Uncomment บรรทัด:
sed -i 's/^#PermitRootLogin/PermitRootLogin/' /etc/ssh/sshd_config

# เพิ่มบรรทัดหลัง Pattern:
sed -i '/^server {/a\    server_name example.com;' /etc/nginx/nginx.conf

# ลบบรรทัดที่มี Pattern:
sed -i '/^#.*comment/d' config.txt

# ลบบรรทัดว่าง:
sed -i '/^$/d' config.txt

# เปลี่ยนทุก .conf ใน Directory:
find /etc/nginx/ -name "*.conf" -exec sed -i 's/old-domain\.com/new-domain.com/g' {} +

# Backup ก่อนเปลี่ยน:
sed -i.bak 's/old/new/g' config.txt
# → สร้าง config.txt.bak เป็น Backup

Regex กับ awk — ดึงข้อมูลเฉพาะ Field

# awk Basics:
# awk แบ่งบรรทัดเป็น Field ($1, $2, $3, ...)
# Default delimiter = Space/Tab

# ดึง IP จาก Access Log (Field 1):
awk '{print $1}' /var/log/nginx/access.log

# ดึง Status Code (Field 9 ใน Combined Log):
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
# → สรุปจำนวน Status Code

# ดึง IP ที่ได้ 403:
awk '$9 == 403 {print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn

# Filter ด้วย Regex:
awk '/ERROR/ {print $0}' /var/log/syslog                    # บรรทัดที่มี ERROR
awk '/^2026-04-16/ {print $0}' /var/log/app.log             # บรรทัดที่ขึ้นต้นด้วยวันที่

# awk กับ Custom Delimiter:
# ดึง Username จาก /etc/passwd (delimiter = :)
awk -F: '{print $1, $3, $6}' /etc/passwd
# → username, UID, home directory

# awk กับ Condition:
# User ที่ UID >= 1000 (Real Users):
awk -F: '$3 >= 1000 {print $1, $3}' /etc/passwd

# คำนวณ Total Bytes จาก Access Log:
awk '{sum += $10} END {print sum/1024/1024 " MB"}' /var/log/nginx/access.log

# Top 10 URLs ที่เข้าบ่อย:
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10

Regex ใน Wireshark Display Filter

# Wireshark ใช้ Regex ใน Display Filter:
# (ต้องใช้ matches หรือ ~)

# หา HTTP Request ที่มีคำว่า "admin":
http.request.uri matches "admin"

# หา DNS Query ที่มี .ru:
dns.qry.name matches "\.ru$"

# หา User-Agent ที่น่าสงสัย:
http.user_agent matches "(bot|crawler|spider|scan)"

# หา IP Range:
ip.addr matches "^10\.0\."

Regex ใน Monitoring Tools

# Prometheus (PromQL):
# Label Matching ด้วย Regex:
http_requests_total{method=~"GET|POST"}
http_requests_total{path=~"/api/.*"}
http_requests_total{status=~"5.."}          # 5xx errors
node_filesystem_avail_bytes{mountpoint!~"/snap.*"}

# Grafana:
# Variable Query กับ Regex:
# label_values(node_filesystem_avail_bytes, mountpoint) → /^\/(?!snap).*/

# Alertmanager:
# Route matching ด้วย Regex:
# routes:
# - match_re:
#     service: "web|api|frontend"
#   receiver: web-team

Regex Cheat Sheet สำหรับ IT Admin

Pattern จับอะไร ใช้ตอนไหน
\d+\.\d+\.\d+\.\d+ IPv4 Address ดึง IP จาก Log
[5][0-9]{2} HTTP 5xx หา Server Error
[4][0-9]{2} HTTP 4xx หา Client Error
Failed password SSH Login ผิด Security Audit
Out of memory OOM Killer Memory Issue
disk.*(full|space) Disk Full Storage Alert
connection (refused|reset|timeout) Network Issue Connectivity Debug
[a-f0-9]{32} MD5 Hash File Integrity
\b[A-Z]{2,}\b คำ UPPERCASE หา ERROR, WARN, CRITICAL

แบบฝึกหัด: Regex กับ Log จริง

# ===========================================
# แบบฝึกหัด Regex สำหรับ IT Admin
# ===========================================
#
# สมมติมี Log File: /var/log/app.log
# 2026-04-16 14:30:01 [ERROR] Connection refused from 192.168.1.50
# 2026-04-16 14:30:05 [INFO] User admin logged in from 10.0.0.1
# 2026-04-16 14:30:10 [WARN] Disk usage at 85% on /dev/sda1
# 2026-04-16 14:31:00 [ERROR] Failed to connect to db.example.com:3306
# 2026-04-16 14:31:30 [INFO] Backup completed: 1.2GB in 45s
#
# แบบฝึกหัด:
# 1. หาบรรทัด ERROR ทั้งหมด:
#    grep "ERROR" /var/log/app.log
#
# 2. ดึง IP Address ทั้งหมด:
#    grep -oP '\d+\.\d+\.\d+\.\d+' /var/log/app.log
#
# 3. หา Disk Usage ที่ > 80%:
#    grep -P 'Disk usage at (8[5-9]|9[0-9]|100)%' /var/log/app.log
#
# 4. ดึง Hostname/Port จาก Connection Error:
#    grep -oP 'connect to \K[^:]+:[0-9]+' /var/log/app.log
#
# 5. นับ ERROR vs WARN vs INFO:
#    grep -oP '\[(ERROR|WARN|INFO)\]' /var/log/app.log | sort | uniq -c
#
# 6. เปลี่ยน IP ใน Config ทั้งหมด:
#    sed -i 's/192\.168\.1\./10.0.0./g' config.ini
# ===========================================

สรุป: Regex เป็นทักษะ Must-Have สำหรับ IT Admin

Regex ไม่จำเป็นต้องจำ Pattern ทั้งหมด แค่เข้าใจพื้นฐาน (Metacharacters, Character Classes, Quantifiers) แล้วรู้ว่าจะใช้กับ grep, sed, awk อย่างไร คุณก็สามารถวิเคราะห์ Log, แก้ไข Config, และ Monitor ระบบได้อย่างมีประสิทธิภาพ ฝึกใช้กับ Log จริงทุกวัน แล้ว Regex จะกลายเป็นเครื่องมือที่คุณขาดไม่ได้

.

.
.
.

จัดส่งรวดเร็วส่งด่วนทั่วประเทศ
รับประกันสินค้าเคลมง่าย มีใบรับประกัน
ผ่อนชำระได้บัตรเครดิต 0% สูงสุด 10 เดือน
สะสมแต้ม รับส่วนลดส่วนลดและคะแนนสะสม

© 2026 SiamLancard — จำหน่ายการ์ดแลน อุปกรณ์ Server และเครื่องพิมพ์ใบเสร็จ

SiamLancard
Logo
Free Forex EA — XM Signal · SiamCafe Blog · SiamLancard · Siam2R · iCafeFX
iCafeForex.com - สอนเทรด Forex | SiamCafe.net
Shopping cart