Bạn đang làm việc với tệp tin văn bản và muốn kiểm tra xem nội dung văn bản có chữ “yêu” hay không chẳng hạn. Thì bạn sẽ có thể kiểm tra rất nhanh mà không cần phải mở text editor lên:
$ grep "yêu" data.txt
vũ tức sôi máu nhưng chỉ có thể cung kính phục tùng mọi yêu cầu của nó tôi có thể giúp cô chỉ cần cô không làm ảnh hưởng đến cuộc sống gia đình tôi mọi yêu cầu của cô tôi đều chấp nhận làm theo
ông không tin chuyện ma quỷ ông chỉ nghĩ con trai mình yêu đương vớ vẩn nửa đêm nửa hôm ngang nhiên dẫn con gái về nhà
Ở trên mình chèn code nên bạn không nhìn thấy highlight, thực tế thì chữ yêu sẽ được bôi đậm và tô màu đỏ. Bằng cách này, bạn nhanh chóng kiểm tra được theo điều kiện bạn muốn.
Bạn có thể tìm kiếm bằng regex nhé, ví dụ:
$ grep "y[êế]u" data.txt
giọng nữ yếu ớt thê lương truyền vào tai anh đứng từ xa chỉ thấy cô ấy là một cái bóng trắng có mái tóc vừa đen vừa dài người yếu bóng vía chắc chắn bị dọa cho chết ngất ngay đến thanh niên trai tráng như vũ mới nhìn qua cũng bị dọa cho giật mình
một luồng khói trắng yếu ớt uốn lượn trong không khí dần dần tụ lại thành hình hài một cô gái gầy yếu vừa khít với chỗ khoanh vùng thi thể
vũ tức sôi máu nhưng chỉ có thể cung kính phục tùng mọi yêu cầu của nó
Hoặc không phân biệt hoa thường, tìm kiếm các dòng bắt đầu với chữ anh,
$ grep -i '^anh' data.txt
Anh chương một con đường ma ám
anh học y vì gia cảnh tốt nên ra trường thuận lợi làm bác sĩ ở bệnh viện lớn chuyện ở công ty của ba anh anh hầu như không quan tâm
anh chăm chú xem mà không để ý ngoài trời đã đổ mưa lớn gió rít từng cơn rợn người
anh nhìn vết máu dài màu đỏ bắt mắt trên cánh tay thở dài để mẹ anh nhìn thấy bà ấy lại mắng ù tai đây
Nếu bạn muốn lấy các dòng này thì output nó ra file thôi:
$ grep 'pattern' filename > output
Còn nếu bạn muốn xóa các dòng theo điều kiện thì sao?
Dùng invert match của command grep phía trên, ví dụ xóa các dòng bắt đầu bằng chữ yêu:
$ grep -v '^anh' data.txt > output
Hoặc dùng sed command như sau:
# sed '/pattern to match/d' ./infile
$ sed '/^yêu/d' data.txt > output