Dalam contoh berikut, sed
cocokkan garis yang dimulai dengan a a
atau a c
dan cetak karakter pertama dari garis itu ( a
atau 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
Namun, garis-garis yang tidak cocok dengan pola juga dicetak. Bagaimana saya mengatakan sed
untuk menghilangkan garis yang tidak cocok dengan pola? Saya dapat memperoleh efek yang diinginkan dengan menggabungkannya dengan grep
(sebagai berikut) tetapi saya ingin tahu apakah sed
dapat mencapai itu "dengan sendirinya".
$ echo "ag
bh
ci
dj
ek
fl" | grep '[ac]' | sed 's/\(a\|c\)./\1/'
output:
a
c
Tidak masalah untuk apa yang benar-benar ingin Anda ketahui, tetapi pola Anda harus dimulai dengan ^ jadi itu berlabuh ke awal baris. Seperti yang dikodekan, itu akan cocok dengan a atau c di mana saja dalam baris selama itu bukan karakter terakhir.
—
Joe