Respuestas:
Puedes usar una clase de personaje :
/[^\s\\]/
coincide con cualquier cosa que no sea un carácter de espacio en blanco ni un \. Aquí hay otro ejemplo:
[abc]significa "coincidencia a, bo c"; [^abc]significa "coincidir con cualquier carácter excepto a, bo c".
$0~/\s*^\s/seguidos de cualquier carácter que no sea espacios en blanco
/^\s+/: comienzo de línea, seguido de uno o más caracteres de espacio en blanco.
gmodificador. /[^\s\\]/g
Puede utilizar una búsqueda anticipada:
/(?=\S)[^\\]/
/(?=\S)\W/
THIS IS A TEST, AND AGAIN. : . Lo siguiente funcionó bien para mí (?=\S)[^"]*.
Esto funcionó para mí usando sed [ Editar: el comentario a continuación señala que sed no admite \ s]
[^ ]
mientras
[^\s]
no
# Delete everything except space and 'g'
echo "ghai ghai" | sed "s/[^\sg]//g"
gg
echo "ghai ghai" | sed "s/[^ g]//g"
g g
\scoincide con algo más que el carácter de espacio. Incluye TAB, retorno de carro de avance de línea, y otros (cómo muchos otros dependen del sabor de expresiones regulares). Es una invención de Perl, originalmente una forma abreviada de la clase de caracteres POSIX [:space:], y no es compatible con sed. Su primera expresión regular anterior debería ser s/[^[:space:]g]//g.
echo "ghai ghai" | sed "s/[^[:space:]g]//g" Rendimientos:g g
En mi sistema: CentOS 5
Puedo usar \sfuera de colecciones pero tengo que usar [:space:]dentro de colecciones. De hecho, [:space:]solo puedo usar colecciones internas. Entonces, para hacer coincidir un solo espacio usando esto, tengo que usar [[:space:]]
Lo que es realmente extraño.
echo a b cX | sed -r "s/(a\sb[[:space:]]c[^[:space:]])/Result: \1/"
Result: a b cX
\s[[:space:]][^[:space:]]Estos dos no funcionarán:
a[:space:]b instead use a\sb or a[[:space:]]b
a[^\s]b instead use a[^[:space:]]b
([^[:space:]])lugar de ([^\s]). Estoy en openSUSE Tumbleweed 2018 04 03.
^interpreta como negación y cuándo como comienzo de línea? En ese sentido, ¿por qué esto no coincide con una línea que comienza con un número de espacios en blanco?$0~/\s*^\s/