Estoy atrapado en incluir expresiones regulares con un comando sed.
P: Quiero reemplazar todas las ocurrencias de dos espacios después del final de una oración con solo una vez espacio.
Aquí esta lo que hice:
sed 's/^ $/^$/' file
Y no sustituyó dos espacios con un espacio una vez que termina la oración.
Salida que obtengo:
This is the output. Hello Hello
Salida que quiero:
This is the output. Hello Hello
text-processing
sed
Zeus
fuente
fuente
Respuestas:
reemplace el punto seguido de dos o más espacios con punto seguido de un solo espacio.
fuente
sed -r 's/\.\s+/. /g' file
con GNU sed ...sed -E
lugar desed -r
. Eso funciona con GNU sed y * BSD sed (incluido Mac OS X) y algunos otros. Está programado para su inclusión como estándar en POSIX "muy pronto ahora".sed -E
a alguien en este sitio que no funcionó perosed -r
funcionó ... He trabajado con GNU sed solo, así que no tengo idea sobre POSIX y otras variaciones ... trataré de incluir este detalle en el futuro , gracias :)-E
durante bastante tiempo (desde al menos 2011, pero las páginas de manual e información solo mencionan-r
)Tu
sed
comando's/^ $/^$/'
no hará lo que quieras. Simplemente reemplaza todas las líneas que contienen un espacio con una línea que contiene^$
.Depende de qué caracteres marcan el final de la oración, puede hacer:
Esto reemplazará 2 o más espacios después
.
,?
o!
con un solo espacio.fuente
sed -r 's/([.?!])\s+/\1 /g' file
sed
script de edición original reemplazará cualquier línea que contenga un solo espacio con la cadena literal^$
.Esto es lo que podrías estar buscando,
Muestra,
Utilizando
sed
,fuente