En el siguiente ejemplo, sed
coincide con las líneas que comienzan con una a
o a c
e imprime el primer carácter de esa línea ( a
o 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
Sin embargo, las líneas que no coinciden con el patrón también se imprimen. ¿Cómo le digo sed
que omita las líneas que no coinciden con el patrón? Puedo obtener el efecto deseado combinándolo con grep
(como sigue), pero me gustaría saber si sed
puedo lograrlo "por sí mismo".
$ echo "ag
bh
ci
dj
ek
fl" | grep '[ac]' | sed 's/\(a\|c\)./\1/'
output:
a
c
No importa lo que realmente quisieras saber, pero tu patrón debe comenzar con ^, por lo que está anclado al comienzo de la línea. Según lo codificado, coincidiría con un a o c en cualquier parte de la línea siempre que no sea el último carácter.
—
Joe