Dec 1, 2009

grep, egrep - tiện ích rất tuyệt vời trong unix

Tiếp theo series filter trong unix, lần này tôi muốn đề cập tới một filter nữa rất hữu dụng và cũng rất thông dụng, đó là grep và egrep - một mở rộng của nó (fgrep bạn có thể tự tìm hiểu thêm). Trước hết, 2 filter trên dùng để làm gì ? Chúng được dùng để lọc ra các dòng thỏa mãn một mẫu (partern) mà bạn chỉ định, ví dụ như số điện thoại, địa chỉ IP, tên, ...



Hai filter này thực ra có thể đồng nhất được, tức là bạn có thể dùng egrep nếu thêm tùy chọn -e vào trong câu lệnh grep. Cấu trúc lệnh grep:

grep [OPTIONS] PATTERN [FILE...]



Các option thông dụng, bạn có thể gặp và sử dụng:

  • -f : thay vì việc bạn chỉ ra một partern dài, bạn có thể chỉ ra file chứa partern đó

  • -i : bỏ qua mọi khác biệt về chữ hoa/thường giữa partern và nội dung trong file đầu vào

  • -v : thực hiện tìm các dòng không chứa partern được đưa ra

  • -w : chỉ tìm những dòng mà có từ khớp toàn bộ với mẫu tìm kiếm

  • -x : tìm dòng mà toàn bộ dòng khớp với mẫu tìm kiếm

  • -c (--count ): Thay vì liệt kê các dòng khớp, nó cho ra số dòng khớp, nếu sử dụng cùng với tùy chọn -v thì nó sẽ đếm số dòng không khớp

  • -m NUM hoặc --max-count=NUM : Khi khớp được NUM dòng, nó sẽ không tìm tiếp trong file nữa

  • -q hoặc --quiet, --silent : Không in ra bất cứ thứ gì ở standard output, trả về 0 khi match được bất cứ môt kết quả nào. Khi bạn chạy một shell thì điều này sẽ cần dùng đến. Nếu không thu được kết quả nào, sẽ trả về một lỗi error (có thể sẽ được gửi tới stder :D).


  • -H hoặc --with-filename : in các dòng match cùng với tên file chứa nó (trong trường hợp tìm trên nhiều file). Tùy chọn này là mặc định, bạn không cần chỉ ra nó.


  • -h, hoặc --no-filename : không thêm tên các file ứng với các dòng match.

No comments:

Post a Comment