Lệnh egrep trong Linux

Giới thiệu

Trong lab này, bạn sẽ học cách sử dụng lệnh egrep, một công cụ mạnh mẽ để tìm kiếm văn bản bằng cách sử dụng regular expressions. Lệnh egrep là một phiên bản mở rộng của lệnh grep, cung cấp các khả năng so khớp mẫu nâng cao hơn. Bạn sẽ bắt đầu bằng cách hiểu cách sử dụng cơ bản của egrep, sau đó khám phá cách sử dụng nó với các regular expressions phức tạp hơn để tìm kiếm các mẫu trong dữ liệu văn bản của bạn. Cuối cùng, bạn sẽ học cách kết hợp egrep với các lệnh Linux khác để thực hiện các tác vụ xử lý văn bản nâng cao hơn.

Lab này bao gồm các bước sau:

  • Tìm hiểu Lệnh egrep
  • Sử dụng egrep để Tìm kiếm Regular Expressions
  • Kết hợp egrep với các Lệnh Linux Khác

Tìm hiểu Lệnh egrep

Trong bước này, bạn sẽ tìm hiểu về lệnh egrep, một công cụ mạnh mẽ để tìm kiếm văn bản bằng cách sử dụng regular expressions. Lệnh egrep là một phiên bản mở rộng của lệnh grep, cung cấp các khả năng so khớp mẫu nâng cao hơn.

Đầu tiên, hãy khám phá cách sử dụng cơ bản của egrep. Lệnh egrep tuân theo cú pháp:

egrep [options] 'pattern' file(s)

Ở đây, 'pattern' là regular expression bạn muốn tìm kiếm trong (các) file được chỉ định.

Ví dụ, giả sử chúng ta có một file tên là data.txt với nội dung sau:

John Doe, 30 years old
Jane Smith, 25 years old
Bob Johnson, 40 years old

Để tìm kiếm các dòng chứa từ "years", chúng ta có thể sử dụng lệnh sau:

egrep 'years' data.txt

Ví dụ đầu ra:

John Doe, 30 years old
Jane Smith, 25 years old
Bob Johnson, 40 years old

Lệnh egrep phân biệt chữ hoa chữ thường theo mặc định. Để thực hiện tìm kiếm không phân biệt chữ hoa chữ thường, bạn có thể sử dụng tùy chọn -i:

egrep -i 'years' data.txt

Ví dụ đầu ra:

John Doe, 30 years old
Jane Smith, 25 years old
Bob Johnson, 40 years old

Bạn cũng có thể sử dụng các mẫu regular expression với egrep để thực hiện các tìm kiếm nâng cao hơn. Ví dụ, để tìm kiếm các dòng chứa một số theo sau là từ "years", bạn có thể sử dụng mẫu '\d+ years':

egrep '\d+ years' data.txt

Ví dụ đầu ra:

John Doe, 30 years old
Jane Smith, 25 years old
Bob Johnson, 40 years old

Trong bước tiếp theo, bạn sẽ học cách sử dụng egrep với các regular expressions phức tạp hơn để tìm kiếm các mẫu trong dữ liệu văn bản của bạn.

Sử dụng egrep để Tìm kiếm Regular Expressions

Trong bước này, bạn sẽ học cách sử dụng egrep để tìm kiếm các mẫu phức tạp hơn bằng cách sử dụng regular expressions.

Hãy tiếp tục sử dụng file data.txt từ bước trước:

John Doe, 30 years old
Jane Smith, 25 years old
Bob Johnson, 40 years old

Để tìm kiếm các dòng chứa một tên bắt đầu bằng "J", bạn có thể sử dụng mẫu regular expression '^J\w+':

egrep '^J\w+' data.txt

Ví dụ đầu ra:

John Doe, 30 years old
Jane Smith, 25 years old

Ký hiệu ^ khớp với phần đầu của dòng và \w+ khớp với một hoặc nhiều ký tự chữ (chữ cái, chữ số hoặc dấu gạch dưới).

Bạn cũng có thể sử dụng toán tử | để tìm kiếm nhiều mẫu. Ví dụ, để tìm kiếm các dòng chứa "John" hoặc "Jane", bạn có thể sử dụng mẫu 'John|Jane':

egrep 'John|Jane' data.txt

Ví dụ đầu ra:

John Doe, 30 years old
Jane Smith, 25 years old

Ngoài ra, bạn có thể sử dụng character classes để khớp với một phạm vi ký tự. Ví dụ: để tìm kiếm các dòng chứa một số từ 20 đến 40, bạn có thể sử dụng mẫu '\b\d{2}\b':

egrep '\b\d{2}\b' data.txt

Ví dụ đầu ra:

John Doe, 30 years old
Jane Smith, 25 years old

\b khớp với ranh giới từ và \d{2} khớp với chính xác hai chữ số.

Hãy nhớ rằng, regular expressions có thể mạnh mẽ nhưng cũng phức tạp. Điều quan trọng là phải thực hành và thử nghiệm với các mẫu khác nhau để làm quen với việc sử dụng egrep cho nhu cầu xử lý văn bản của bạn.

Kết hợp egrep với các Lệnh Linux Khác

Trong bước cuối cùng này, bạn sẽ học cách kết hợp lệnh egrep với các lệnh Linux khác để thực hiện các tác vụ xử lý văn bản nâng cao hơn.

Một trường hợp sử dụng phổ biến là kết hợp egrep với lệnh wc (word count) để đếm số lượng dòng khớp với một mẫu cụ thể. Ví dụ, để đếm số lượng dòng trong file data.txt chứa một số từ 20 đến 40, bạn có thể sử dụng lệnh sau:

egrep -c '\b\d{2}\b' data.txt

Ví dụ đầu ra:

2

Tùy chọn -c của egrep yêu cầu nó trả về số lượng dòng khớp thay vì chính các dòng.

Bạn cũng có thể sử dụng egrep với lệnh sed (stream editor) để thực hiện các thay thế văn bản. Ví dụ: để thay thế tất cả các lần xuất hiện của "years" bằng "yrs" trong file data.txt, bạn có thể sử dụng lệnh sau:

sed 's/years/yrs/g' <(egrep -o 'years' data.txt)

Ví dụ đầu ra:

John Doe, 30 yrs old
Jane Smith, 25 yrs old
Bob Johnson, 40 yrs old

Lệnh egrep -o 'years' data.txt trích xuất tất cả các lần xuất hiện của từ "years" từ file data.txt và lệnh sed 's/years/yrs/g' thay thế chúng bằng "yrs".

Một sự kết hợp hữu ích khác là egrep với lệnh cut để trích xuất các trường cụ thể từ dữ liệu văn bản. Ví dụ: để trích xuất tên từ file data.txt, bạn có thể sử dụng lệnh sau:

egrep -o '\w+' data.txt | cut -d',' -f1

Ví dụ đầu ra:

John
Jane
Bob

Lệnh egrep -o '\w+' data.txt trích xuất tất cả các ký tự chữ (chữ cái, chữ số và dấu gạch dưới) từ file và lệnh cut -d',' -f1 chọn trường đầu tiên (trước dấu phẩy) từ đầu ra.

Bằng cách kết hợp egrep với các lệnh Linux khác, bạn có thể tạo ra các quy trình xử lý văn bản mạnh mẽ để xử lý một loạt các tác vụ thao tác văn bản.

Tóm tắt

Trong lab này, bạn đã học về lệnh egrep, một phiên bản mở rộng của lệnh grep cung cấp các khả năng so khớp mẫu nâng cao hơn bằng cách sử dụng regular expressions. Bạn đã khám phá cách sử dụng cơ bản của egrep, bao gồm cách thực hiện tìm kiếm phân biệt chữ hoa chữ thường và không phân biệt chữ hoa chữ thường, và cách sử dụng các mẫu regular expression để tìm kiếm các mẫu phức tạp hơn trong dữ liệu văn bản.

Tiếp theo, bạn đã đi sâu hơn vào việc sử dụng egrep với các regular expressions phức tạp hơn để tìm kiếm các mẫu trong dữ liệu văn bản của bạn. Bạn đã học cách sử dụng regular expressions để tìm kiếm các dòng chứa các mẫu tên cụ thể, cũng như cách kết hợp egrep với các lệnh Linux khác để thực hiện các tác vụ xử lý văn bản mạnh mẽ.

400+ câu lệnh phổ biến trong Linux