
次の例では、またはsed
で始まる行に一致し、その行の最初の文字 (または) を出力します。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'