SinhVienCNTT.Net
Thứ Sáu, Tháng 10 10, 2025
  • Login
No Result
View All Result
  • Trang chủ
  • Bài viết nổi bật
  • Security
    • Kỹ thuật phân tích mã độc
    • CEH v13
  • Các môn học đại học
    • Các môn đại cương
      • Nhập môn mạng máy tính
      • Nhập môn lập trình
      • Hệ điều hành
    • Ngành An toàn thông tin
      • Lập trình hệ thống
    • Ngành Mạng máy tính & Truyền thông dữ liệu
  • Tài liệu CNTT
  • Liên hệ
Gửi email
  • Trang chủ
  • Bài viết nổi bật
  • Security
    • Kỹ thuật phân tích mã độc
    • CEH v13
  • Các môn học đại học
    • Các môn đại cương
      • Nhập môn mạng máy tính
      • Nhập môn lập trình
      • Hệ điều hành
    • Ngành An toàn thông tin
      • Lập trình hệ thống
    • Ngành Mạng máy tính & Truyền thông dữ liệu
  • Tài liệu CNTT
  • Liên hệ
No Result
View All Result
SinhVienCNTT.Net
No Result
View All Result
Home Chưa phân loại

Bài 5: Sử dụng biểu thức chính quy với lệnh grep

admin by admin
14 Tháng 7, 2022
in Chưa phân loại
1

Biểu thức chính quy (hay Regular Expression) là một mẫu quy tắc dùng để lọc văn bản. Bài hôm nay chúng ta sẽ tìm hiểu lệnh grep và sử dụng biểu thức chính quy.

Lệnh grep

Lệnh grep giống như một lệnh tìm kiếm trên file văn bản. Kết quả sẽ hiển thị ngay trên màn hình command line theo dòng nào có chứa chuỗi sẽ hiển thị cả dòng trong file đó ra và chuỗi đó sẽ được highlight.

lenh grep
Minh họa lệnh grep

Cách sử dụng:

grep [OPTION] PATTERN [FILE...]

Sử dụng lệnh grep để tìm kiếm user root:

$ grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

Đếm số kết quả

Sử dụng thêm option -c hoặc --count để hiển thị số kết quả được tìm thấy.

$ grep -c root /etc/passwd
3

Tìm kiếm không phân biệt hoa thường

Sử dụng lệnh grep option -i để tìm kiếm chính xác chuỗi không phân biệt viết thường hay viết hoa:

$ grep -i root /etc/passwd

Tìm kiếm với danh sách từ khóa được lưu ở một file khác

Giả sử ta có file accounts.txt chứa danh sách các từ khóa cần tìm kiếm:

$ cat accounts.txt
sshd
Christine
nfsnobody

Sử dụng lệnh grep với tham số -f để chỉ định file chứa danh sách từ khóa.

$ grep -F -f accounts.txt /etc/passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
Christine:x:1001:1001::/home/Christine:/bin/bash
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

Tìm kiếm chính xác từ

Mặc định lệnh grep sẽ trả về các kết quả chứa từ khóa, bao gồm từ khóa đó có thể là chuỗi con. Để tìm chính xác một từ, sử dụng tham số -w.

$ grep -w root /etc/passwd

Tìm kiếm trong tất cả các thư mục con

Đôi khi ta không biết file cần tìm nằm trong thư mục nào, hoặc thư mục có rất nhiều file, thì ta có thể sử dụng option -r để tìm kiếm tất cả các file trong tất cả các thư mục cũng như thư mục con.

$ grep -r abc /var/www/html

Tìm kiếm ngược

Để tìm tất cả các dòng không chứa từ khóa đó, sử dụng option -v.

$ grep -v root /etc/passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
Christine:x:1001:1001::/home/Christine:/bin/bash
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

Chỉ hiển thị tên file

Sử dụng option -l để hiển thị tên các file chứa nội dung cần tìm kiếm.

$ grep -l root /etc
passwd

Hiển thị số thứ tự của dòng kết quả

Nếu giả sử một file có rất rất nhiều dòng, khi tìm kiếm, ta không thể xác định được dòng đó ở vị trí nào trong file thì có thể sử dụng option -n để đánh dấu số thứ tự của mỗi dòng trong kết quả:

$ grep -n root /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
5:operator:x:11:0:operator:/root:/sbin/nologin

Biểu thức chính quy cơ bản

Regular Expression hay còn gọi là biểu thức chính quy được dùng để xử lý chuỗi nâng cao thông qua biểu thức riêng của nó, những biểu thức này sẽ có những nguyên tắc riêng và bạn phải tuân theo nguyên tắc đó thì biểu thức mới hoạt động được.

Dấu chấm (.) thể hiện một ký tự, dấu chấm theo sau là dấu hoa thị (.*) tượng trưng cho nhiều ký tự.

 $ grep daemon.*nologin /etc/passwd
 daemon:x:2:2:daemon:/sbin:/sbin/nologin  
 daemon:/dev/null:/sbin/nologin 

Sử dụng dấu nón (^) để tìm kiếm nội dung bắt đầu bằng từ cho trước.

$ grep ^root /etc/passwd
root:x:0:0:root:/root:/bin/bash

Sử dụng dấu ($) để tìm kiếm nội dung kết thúc bằng từ cho trước. Tương tự như ví dụ trên.

Nếu muốn lọc ra những dòng không phải là dòng trống, sử dụng kết hợp tham số -v và regular expression ^$.

$ grep -v ^$ /etc/passwd

Một số class được định nghĩa sẵn:

  • [:alnum:]: khớp với tất cả các ký tự số cùng với ký tự chữ cái không phân biệt hoa thường. Tương đương với [0-9A-Za-z].
  • [:alpha:]: khớp với tất cả ký tự chữ cái không phân biệt hoa thường, tương đương [A-Za-z].
  • [:blank:]: khớp với các ký tự khoảng trắng, kể cả dấu tab.
  • [:digit:]: bao gồm các ký tự số từ 0 – 9, tương đương [0-9].
  • [:lower:]: khớp với các ký tự chữ cái viết thường.
  • [:punct:]: khớp với các ký tự dấu câu như !, #, $ và @.
  • [:space:]: khớp với ký tự dấu cách, dấu tab, khoảng trắng.
  • [:upper:]: khớp với tất cả các ký tự chữ cái in hoa, tương đương [A-Z].

Cách sử dụng các class này như sau:

Giả sử có file random.txt:

 $ cat random.txt
 42 
 Flat Land 
 Schrodinger's Cat 
 0010 1010 
 0000 0010 

Dùng lệnh grep với class để lọc ra những dòng chỉ chứa ký tự số:

 $ grep [[:digit:]] random.txt
 42 
 0010 1010 
 0000 0010

Ngoài ra ta có thể sử dụng dấu sọc đứng (|) để thay thế cho “hoặc”. Ví dụ sau sẽ thực hiện tìm kiếm các dòng bắt đầu bằng “root” hoặc bắt đầu bằng “dbus“.

$ grep -E "^root|^dbus" /etc/passwd
root:x:0:0:root:/root:/bin/bash
dbus:x:81:81:System message bus:/:/sbin/nologin

Hoặc một ví dụ phức tạp khác:

$ grep "(daemon|s).*nologin" /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

Xem thêm Bài 4: Một số lệnh thao tác với tệp văn bản trong Linux.

Tags: Bash ShellRegular Expression
Share63Tweet39
Previous Post

Dịch vụ của Internet, API và giao thức của Internet

Next Post

[CEH Tiếng Việt] Module 1 – Phần 1: Tổng quan về bảo mật thông tin

admin

admin

A Winner Never Stops Trying.

Related Posts

Thư điện tử trên Internet
Chưa phân loại

Thư điện tử trên Internet

14 Tháng 10, 2024
Nhóm hacktivist Twelve: Phá hoại các mục tiêu của Nga bằng tấn công mạng quy mô lớn
Chưa phân loại

Nhóm hacktivist Twelve: Phá hoại các mục tiêu của Nga bằng tấn công mạng quy mô lớn

22 Tháng 9, 2024
lpic-1-p6
Chưa phân loại

Bài 6: Lệnh sed, định hướng nhập, xuất và cơ chế đường ống

25 Tháng 7, 2022
AWS-Lab-4
Chưa phân loại

[AWS Lab Series] Lab 4: Cấu hình Elastic Block Store (EBS) cơ bản

22 Tháng 7, 2022
AWS-Lab-3
Chưa phân loại

[AWS Lab Series] Lab 3: Cấu hình IP tĩnh cho EC2 instance – Elastic IP

6 Tháng 7, 2022
AWS Lab 2
Chưa phân loại

[AWS Lab Series] Lab 2: Kết nối Remote Desktop đến Amazon EC2

6 Tháng 7, 2022
Next Post
[CEH Tiếng Việt] Module 1 – Phần 1: Tổng quan về bảo mật thông tin

[CEH Tiếng Việt] Module 1 - Phần 1: Tổng quan về bảo mật thông tin

Comments 1

  1. Pingback: Bài 6: Lệnh sed, định hướng nhập, xuất và cơ chế đường ống

Để lại một bình luận Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Danh mục

  • Các môn học đại học
  • CCNA 200-301
  • CEH Tiếng Việt – CEH v13
  • Chưa phân loại
  • Digital Forensics
  • Machine Learning
  • Network
  • Nổi bật
  • Phân tích mã độc
  • Security
  • Tài liệu CNTT
  • Từ vựng IELTS

Series

  • CHFI Tiếng Việt (1)
  • Cơ sở dữ liệu (2)
  • [2023] Share 1200 câu dump CCNA 200-301 mới nhất (3)
  • 1000 collocations IELTS phổ biến nhất (1)
  • Hệ điều hành (5)
  • Series cấu hình Firewall Cisco ASA (2)
  • Nhập môn lập trình (1)
  • 22 Lab thực hành Amazon Web Service (AWS) từ cơ bản đến nâng cao (4)
  • Nhập môn mạng máy tính (20)
  • Lập trình hệ thống (3)

logo sinhviencntt.net

Blog Sinh viên CNTT chia sẻ kiến thức, tài liệu liên quan đến nhóm ngành Công nghệ thông tin.

Chúng tôi sẵn sàng đón những ý kiến đóng góp, cũng như bài viết của các bạn gửi đến SinhVienCNTT.Net.

Giới thiệu

Blog Sinh viên CNTT chia sẻ kiến thức, tài liệu liên quan đến nhóm ngành Công nghệ thông tin.

Liên hệ

Email: sinhviencntt.net@gmail.com

Tìm kiếm

No Result
View All Result

Danh mục

  • Các môn học đại học
  • CCNA 200-301
  • CEH Tiếng Việt – CEH v13
  • Chưa phân loại
  • Digital Forensics
  • Machine Learning
  • Network
  • Nổi bật
  • Phân tích mã độc
  • Security
  • Tài liệu CNTT
  • Từ vựng IELTS
  • Home
  • Liên hệ
  • Privacy & Policy
  • Other Links

© 2023 SinhVienCNTT.Net - Blog Sinh viên Công nghệ thông tin.

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In
No Result
View All Result
  • Trang chủ
  • Bài viết nổi bật
  • Security
    • Kỹ thuật phân tích mã độc
    • CEH v13
  • Các môn học đại học
    • Các môn đại cương
      • Nhập môn mạng máy tính
      • Nhập môn lập trình
      • Hệ điều hành
    • Ngành An toàn thông tin
      • Lập trình hệ thống
    • Ngành Mạng máy tính & Truyền thông dữ liệu
  • Tài liệu CNTT
  • Liên hệ

© 2023 SinhVienCNTT.Net - Blog Sinh viên Công nghệ thông tin.