Trong ví dụ sau, sedkhớp các dòng bắt đầu bằng một ahoặc a cvà in ký tự đầu tiên của dòng đó ( ahoặc c):
$ echo "ag
bh
ci
dj
ek
fl" | sed 's/\(a\|c\)./\1/' # Matches lines starting with 'a' or 'c'.
output:
a
bh
c
dj
ek
fl
Tuy nhiên, các dòng không khớp với mẫu cũng được in ra. Làm thế nào để tôi biết sedbỏ qua các dòng không khớp với mẫu? Tôi có thể đạt được hiệu quả mong muốn bằng cách kết hợp nó với grep(như sau) nhưng tôi muốn biết liệu sedcó thể đạt được "chính nó" hay không.
$ echo "ag
bh
ci
dj
ek
fl" | grep '[ac]' | sed 's/\(a\|c\)./\1/'
output:
a
c
Nó không quan trọng đối với những gì bạn thực sự muốn biết, nhưng mô hình của bạn nên bắt đầu bằng ^ vì vậy nó được neo vào đầu dòng. Như được mã hóa, nó sẽ khớp với a hoặc c ở bất kỳ đâu trong dòng miễn là nó không phải là ký tự cuối cùng.
—
Joe