
在以下範例中,sed
匹配以 ana
或 a開頭的行c
並列印該行的第一個字元 (a
或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
但是,與模式不符的行也會被印出來。我如何告訴sed
省略與模式不符的行?我可以透過將其與(如下)組合來獲得所需的效果grep
,但我想知道是否sed
可以「單獨」實現該效果。
$ echo "ag
bh
ci
dj
ek
fl" | grep '[ac]' | sed 's/\(a\|c\)./\1/'
output:
a
c
答案1
使用no-print
標誌 ( -n
) 並明確列印成功的替換命令 ( s///p
):
sed -n 's/\(a\|c\)./\1/p'