Cách loại trừ một từ bằng grep
Mục lục:
Công cụ dòng lệnh grep cực kỳ hữu ích để tìm kiếm trong dữ liệu văn bản các dòng và đoạn mã khớp với một chuỗi, ký tự, từ hoặc biểu thức chính quy đã xác định. Mặc dù hầu hết việc sử dụng grep là để sắp xếp dữ liệu cho khớp cú pháp, nhưng nếu bạn muốn loại trừ một từ hoặc chuỗi bằng grep thì sao? Việc loại trừ các kết quả khớp dòng với grep cũng hữu ích như việc tìm và in các kết quả khớp trong grep, vì vậy, hãy cùng tìm hiểu cách loại trừ các kết quả khớp chuỗi và loại trừ các từ bằng grep.
Rõ ràng là bạn sẽ muốn có một số kinh nghiệm về dòng lệnh và tiếp xúc với grep để thấy điều này hữu ích. Nếu muốn làm theo, bạn có thể mở ứng dụng Terminal và tự mình dùng thử. Vì grep là một tiện ích bất khả tri của hệ điều hành, nên bạn có thể sử dụng thủ thuật loại trừ trong Mac OS, Linux, unix hoặc bất kỳ thứ gì khác mà bạn có sử dụng grep.
Cách loại trừ một từ bằng grep
Cách đơn giản nhất để loại trừ các dòng có chuỗi hoặc cú pháp khớp là sử dụng grep và cờ -v.
Ví dụ: giả sử chúng ta đang sử dụng cat để in một tệp tại dòng lệnh, nhưng chúng ta muốn loại trừ tất cả các dòng có chứa thuật ngữ “ThisWord”, khi đó cú pháp sẽ như sau:
cat example.txt | grep -v ThisWord"
Đầu ra sẽ là tệp văn bản example.txt nhưng không bao gồm bất kỳ dòng nào chứa chuỗi khớp với “ThisWord”.
Bạn cũng có thể sử dụng grep trực tiếp trên các tệp và loại trừ các đối sánh dòng dựa trên các từ hoặc cú pháp, như vậy:
"grep -v ThisWord>"
Sử dụng tùy chọn nào hoạt động tốt nhất cho quy trình làm việc cụ thể của bạn.
Cách loại trừ nhiều chuỗi hoặc từ bằng grep
Bây giờ bạn đã biết cách loại trừ các kết quả khớp cho một từ, câu hỏi hiển nhiên tiếp theo là về việc loại trừ nhiều từ bằng grep. Điều đó cũng đơn giản không kém và có một số cách khác nhau để thực hiện điều này bằng cách sử dụng cờ -v cũng như cờ -e.
Đầu tiên, hãy lấy ví dụ trên về việc sử dụng cat trên tệp được dẫn tới grep và loại trừ bất kỳ dòng nào khớp với hai từ; “Word1” và “Word2”, nó sẽ giống như sau:
"cat example.txt | grep -v -e Word1 -e Word2"
Bất kỳ dòng nào chứa “Word1” hoặc “Word2” sẽ bị loại khỏi kết quả được in.
Bạn cũng có thể sử dụng grep trực tiếp trên các tệp như trước đây:
"grep -v -e Word1 -e Word2 example.txt"
Cách tiếp cận khác là tách những gì cần loại trừ bằng grep bằng cách sử dụng một đường ống để tách từng kết quả phù hợp, như vậy:
grep -Ev word1|word2 example.txt"
Nếu bạn kiểm tra bất kỳ tùy chọn nào trong số này trên một tệp văn bản mẫu, bạn sẽ thấy đầu ra giống hệt nhau bất kể phương pháp bạn thực hiện là gì, mỗi tùy chọn loại trừ các dòng bao gồm các cụm từ, cú pháp, từ hoặc cụm từ được nhắm mục tiêu. khớp văn bản.
Tuyệt vời, hãy cho tôi xem một ví dụ hữu ích về việc loại trừ dữ liệu bằng grep!
Đối với một ví dụ thực tế mà người dùng Mac nâng cao có thể thấy hữu ích, chúng tôi có thể sử dụng loại trừ grep khi in và truy vấn lịch sử dòng lệnh để tìm các lệnh đã thực thi trước đó nhằm tìm giá trị mặc định khớp, nhưng loại trừ một số chuỗi mặc định đã chọn khỏi chuỗi đầu ra.
Trong ví dụ ở đây, chúng tôi sẽ in lịch sử lệnh cho các kết quả khớp chuỗi mặc định, nhưng loại trừ bất kỳ điều gì khớp với iTunes như được xác định bởi “com.apple.itunes”:
"history |grep defaults write |grep -v -e com.apple.itunes"
Vì vậy, nếu bạn đã theo dõi, điều này sẽ báo cáo lại tất cả các lần thực thi lịch sử của lệnh “ghi mặc định”, nhưng loại trừ mọi thứ liên quan đến ứng dụng iTunes. Đẹp đấy chứ hả?
Nếu bạn có bất kỳ cách sử dụng đặc biệt hữu ích nào trong việc loại trừ kết quả khớp với grep, hãy chia sẻ chúng với chúng tôi trong phần nhận xét bên dưới! Và nếu bạn thích bài viết này, thì gần như chắc chắn bạn sẽ thích duyệt qua nhiều bài viết về dòng lệnh của chúng tôi ở đây, nơi có nhiều điều hơn để tìm hiểu!