sedvà awklà supersets của grep, có những điều dễ dàng hơn để làm với cái này hay cái khác.
grep foocó thể được viết sed '/foo/!d'hoặc awk /foo/, nhưng xem xét:
grep -i foosẽ phải là sed '/[fF][oO][oO]/!d'trừ khi bạn muốn xem xét các phần mở rộng không chuẩn như GNU sed '/foo/I!d'. Hoặc với awk: awk 'tolower($0) ~ /foo/'hoặc một lần nữa sử dụng phần mở rộng GNU : awk -v IGNORECASE=1 /foo/.
Những công cụ khác nhau rất tốt và cồng kềnh với các công cụ khác:
grep
greplà một công cụ đơn giản nhưng có các chế độ hoạt động rất chuyên dụng khó tái tạo bằng awkhoặc sed:
grep -i đối với trường hợp khớp không nhạy cảm (xem ở trên)
grep -Fe "$string"cho tìm kiếm chuỗi cố định ( export string; awk 'index($0, ENVIRON["string"])'với awk, không có tương đương trực tiếp với sed).
- (không chuẩn)
grep -rcho tìm kiếm đệ quy
- (không chuẩn)
grep -P/ pcregrepcho regexps giống như perl (một số sedtriển khai có hỗ trợ regex giống như perl mặc dù không phải là chính nhất)
- (không chuẩn)
grep -ođể trả về phần khớp (một số dòng awkhoặc sedlàm tương tự)
- (không chuẩn)
grep -A/B/Cđể trả về bối cảnh xung quanh trận đấu (một lần nữa đau đớn phải làm theo cách tương tự với sedhoặc awk)
quyến rũ
s/foo/bar/: sed'S slệnh có nhiều tính năng mà khó thực hiện trong awknhư:
s/foo\(.*\)bar/\1/g: chụp (mặc dù GNU awk có gensub()phần mở rộng cho điều đó)
s/foo/bar/3: thay thế lần xuất hiện thứ 3 trên mỗi dòng
- (không chuẩn): chỉnh sửa tệp tại chỗ (mặc dù hiện tại nó cũng được GNU hỗ trợ
awk).
ôi
awk là tính năng phong phú nhất trong ba.
- tốt cho việc xử lý số
- tốt để xử lý đầu vào được định dạng trong các cột.
- tốt để trích xuất và kết hợp dữ liệu từ các nguồn khác nhau, với các mảng kết hợp của nó.
perl
perlnhư một công cụ báo cáo và trích xuất thực tế có những công cụ tốt nhất. Đó là những gì nó được thiết kế ban đầu (là công cụ làm cho tất cả những thứ đó sed/ awklỗi thời).
Nắm vững perlđể làm xử lý văn bản không cung cấp một lợi thế nghiêm trọng. Tôi khuyên bạn nên dành một chút thời gian cho nó, thậm chí trước khi xem các sedlệnh ít phổ biến hơn .
hiệu suất
Theo nguyên tắc thông thường, công cụ càng chuyên dụng, hiệu quả nhất trong công việc. Nhưng điều đó cũng phụ thuộc rất nhiều vào việc thực hiện, nhiệm vụ và một vài yếu tố và hiệu suất khác có thể có sự đánh đổi có thể cần phải tính đến.
Ví dụ, có một số grephoặc sedtriển khai rất nhanh, nhưng chẳng hạn, chúng không hỗ trợ các ký tự đa nhân nên chỉ có thể hoạt động chính xác trên văn bản US-English ở các địa phương nhiều byte. Hoặc chúng nhanh vì chúng hoạt động trên một bộ đệm có độ dài cố định nhỏ và do đó không thể hoạt động trên đầu vào tùy ý ...