Lệnh grep trong Linux

Giới thiệu

Trong lab này, bạn sẽ học cách sử dụng lệnh grep mạnh mẽ trong Linux để tìm kiếm và đối sánh các mẫu trong các tệp văn bản. Lab này bao gồm các kiến thức cơ bản về lệnh grep, 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, sử dụng biểu thức chính quy và kết hợp grep 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. Đến cuối lab này, bạn sẽ hiểu rõ cách sử dụng hiệu quả lệnh grep để hợp lý hóa quy trình làm việc xử lý văn bản của mình.

Hiểu các kiến thức cơ bản về lệnh grep

Trong bước này, bạn sẽ học các kiến thức cơ bản về lệnh grep trong Linux. Lệnh grep là một công cụ mạnh mẽ được sử dụng để tìm kiếm và đối sánh các mẫu trong các tệp văn bản.

Đầu tiên, hãy tạo một tệp văn bản mẫu để thực hành:

echo "The quick brown fox jumps over the lazy dog." > sample.txt

Bây giờ, hãy sử dụng lệnh grep để tìm kiếm từ "fox" trong tệp sample.txt:

grep "fox" sample.txt

Đầu ra ví dụ:

The quick brown fox jumps over the lazy dog.

Lệnh grep tìm kiếm trong tệp và in ra các dòng có chứa mẫu được chỉ định, trong trường hợp này là "fox".

Tiếp theo, hãy thử tìm kiếm không phân biệt chữ hoa chữ thường cho từ "dog":

grep -i "dog" sample.txt

Đầu ra ví dụ:

The quick brown fox jumps over the lazy dog.

Tùy chọn -i làm cho tìm kiếm không phân biệt chữ hoa chữ thường, vì vậy nó sẽ khớp với cả "dog" và "Dog".

Bạn cũng có thể sử dụng biểu thức chính quy với grep để thực hiện đối sánh mẫu nâng cao hơn. Ví dụ: để tìm kiếm các dòng bắt đầu bằng "The":

grep "^The" sample.txt

Đầu ra ví dụ:

The quick brown fox jumps over the lazy dog.

Ký hiệu ^ là một biểu thức chính quy khớp với phần đầu của một dòng.

Đó là phần giới thiệu cơ bản về lệnh grep. Trong các bước tiếp theo, bạn sẽ học cách sử dụng grep với các tùy chọn nâng cao hơn và kết hợp nó với các lệnh Linux khác.

Sử dụng grep để tìm kiếm các mẫu trong tệp văn bản

Trong bước này, bạn sẽ học cách sử dụng lệnh grep để tìm kiếm các mẫu phức tạp hơn trong các tệp văn bản.

Hãy bắt đầu bằng cách tạo một tệp mẫu phức tạp hơn:

cat > sample.txt << EOF
The quick brown fox jumps over the lazy dog.
The lazy dog sleeps all day.
I like cats and dogs.
I don't like snakes.
EOF

Bây giờ, hãy tìm kiếm các dòng có chứa cả "dog" và "lazy":

grep -E "dog.*lazy|lazy.*dog" sample.txt

Đầu ra ví dụ:

The quick brown fox jumps over the lazy dog.
The lazy dog sleeps all day.

Tùy chọn -E cho phép sử dụng các biểu thức chính quy mở rộng, cho phép chúng ta sử dụng toán tử | để khớp với các mẫu "dog.*lazy" hoặc "lazy.*dog".

Bạn cũng có thể sử dụng grep để tìm kiếm các dòng có chứa một từ cụ thể, nhưng loại trừ các từ khác. Ví dụ: hãy tìm các dòng có chứa "dog" nhưng không có "lazy":

grep "dog" sample.txt | grep -v "lazy"

Đầu ra ví dụ:

I like cats and dogs.

Lệnh grep -v được sử dụng để loại trừ các dòng khớp với mẫu đã cho.

Một tính năng hữu ích khác của grep là khả năng hiển thị số dòng của các dòng khớp. Hãy thử điều đó:

grep -n "dog" sample.txt

Đầu ra ví dụ:

1:The quick brown fox jumps over the lazy dog.
2:The lazy dog sleeps all day.
3:I like cats and dogs.

Tùy chọn -n thêm số dòng trước mỗi dòng khớp.

Trong bước tiếp theo, bạn sẽ học cách kết hợp grep với các lệnh Linux khác để xử lý văn bản mạnh mẽ hơn.

Kết hợp grep 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 grep 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.

Hãy bắt đầu bằng cách tạo một tệp mẫu mới với một số mục nhật ký:

cat > logs.txt << EOF
2023-04-01 10:30:45 INFO: Application started
2023-04-01 10:31:12 DEBUG: Connecting to database
2023-04-01 10:31:15 INFO: Database connection established
2023-04-01 10:31:30 ERROR: Failed to process user request
2023-04-01 10:32:00 INFO: Application shutting down
EOF

Bây giờ, hãy sử dụng grep để tìm tất cả các mục nhật ký ERROR:

grep "ERROR" logs.txt

Đầu ra ví dụ:

2023-04-01 10:31:30 ERROR: Failed to process user request

Để đếm số lượng mục nhật ký ERROR, chúng ta có thể kết hợp grep với lệnh wc (đếm từ):

grep "ERROR" logs.txt | wc -l

Đầu ra ví dụ:

1

Một sự kết hợp hữu ích khác là sử dụng grep với lệnh cut để trích xuất các trường cụ thể từ các mục nhật ký. Ví dụ: để lấy dấu thời gian và cấp nhật ký cho mỗi mục:

grep "INFO\|DEBUG\|ERROR" logs.txt | cut -d' ' -f1-3

Đầu ra ví dụ:

2023-04-01 10:30:45 INFO:
2023-04-01 10:31:12 DEBUG:
2023-04-01 10:31:15 INFO:
2023-04-01 10:31:30 ERROR:
2023-04-01 10:32:00 INFO:

Lệnh cut được sử dụng để chia dòng theo ký tự khoảng trắng (-d' ') và trích xuất 3 trường đầu tiên (-f1-3).

Bạn cũng có thể sử dụng grep với các lệnh khác như sort, uniqawk để thực hiện các tác vụ xử lý văn bản nâng cao hơn. Khả năng là vô tận khi bạn kết hợp grep với các tiện ích Linux khác.

Đó là tất cả cho lab này về lệnh grep. Bây giờ bạn sẽ có hiểu biết tốt về cách sử dụng grep để tìm kiếm các mẫu trong các tệp văn bản và cách kết hợp nó với các lệnh Linux khác để xử lý văn bản hiệu quả.

Tóm tắt

Trong lab này, bạn đã học các kiến thức cơ bản về lệnh grep, bao gồm cách sử dụng nó để tìm kiếm các mẫu trong các tệp văn bản và kết hợp nó với các lệnh Linux khác. Bạn bắt đầu bằng cách hiểu cách sử dụng cơ bản của grep, chẳng hạn như tìm kiếm các từ cụ thể, thực hiện tìm kiếm không phân biệt chữ hoa chữ thường và sử dụng biểu thức chính quy. Sau đó, bạn đã khám phá đối sánh mẫu nâng cao hơn với grep, học cách tìm kiếm các dòng chứa nhiều từ khóa và sử dụng biểu thức chính quy để tìm các mẫu cụ thể trong văn bản. Trong suốt lab, bạn đã thực hành các khái niệm này bằng cách sử dụng các tệp văn bản mẫu, có được hiểu biết vững chắc về lệnh grep và các ứng dụng thực tế của nó.

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