5678 []
testing,\ group []
[testing []
ip\ 5.6.7.8 []
launch-wizard-1 0.0.0.0/0
456dlkjfa []
1.2.3.4 []
test 1.2.3.4/32 4.3.2.0/23 4.3.2.0/23
default 4.3.2.0/23 4.3.2.0/23
launch-wizard-2 0.0.0.0/0
launch-wizard-3 0.0.0.0/0
2.3.4.5/32 []
Me gustaría obtener la primera columna de lo anterior, pero el problema es que necesito tratar \
(espacio de barra invertida) como parte de la columna, así que awk '{print $1}'
debería darme
5678
testing,\ group
[testing
ip\ 5.6.7.8
launch-wizard-1
456dlkjfa
1.2.3.4
test
default
launch-wizard-2
launch-wizard-3
2.3.4.5/32
text-processing
awk
sed
GitanoCosmonauta
fuente
fuente
\
especial? Por ejemplo, ¿haya\\ b
uno o dos campos?[[:space:]]
con\[[:space:]]
, los datos originales han sido \ intactos en su lugar. Después de obtener los datos originales en la primera columna delimitados solo por espacios y no\[[:space:]]
, estaría reemplazando\[[:space:]]
con[[:space:]]
y me quedaría con los datos originales nuevamente que tienen \.Respuestas:
con gnu awk (
gawk
) puedes usar algunas aserciones de longitud cero como\<
o\>
:pero por desgracia no los que en toda regla de
perl
opcre
(por ejemplo.(?<!\\)
,(?<=\w)
, etc):fuente
Podrías sustituir \ space con otra cosa y volver nuevamente después.
fuente
\034
:awk '{gsub(/\\ /,SUBSEP,$0); val=$1; gsub(SUBSEP,"\\ ",val); print val}' file
Con GNU
grep
o compatible:O con ERE:
Eso se trata
\
como un operador de comillas, para los espacios en blanco como un delimitador, pero también para sí mismo. Es decir, en lafoo\\ bar
entrada, vuelvefoo\\
.fuente
Con solo
sed
:O más corto:
Esto
(([^\]*\\ ){1,})?[^ ]*
coincide:[^\]*\\
: cualquier cosa que no sea una barra diagonal inversa que termine con una barra diagonal inversa seguida de un espacio (tenga\
en cuenta que no se requiere que se escape la clase de carácter interno, pero sí lo hace fuera).([^\]*\\ ){1,}
: coincidencia anterior con una o más veces de ocurrencias.(([^\]*\\ ){1,})?
: esto es opcional cuando se usa(...)?
; podríamos usar([^\]*\\ ){0,}
en su lugar también o([^\]*\\ )*
.((([^\]*\\ ){1,})?[^ ]*)
: coincide con lo anterior, que es opcional, seguido de cualquier cosa que no sea un espacio y mantenga como coincidencia de grupo con\1
su referencia posterior.((([^\]*\\ ){1,})?[^ ]*).*
: coincidencias anteriores(...)
y cualquier otra cosa.*
.entonces es parte de reemplazo solo imprima
\1
cuál es la salida:fuente