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 []
Я хотел бы получить первый столбец из вышеперечисленного, но подвох в том, что мне нужно рассматривать \
(пространство с обратной косой чертой) как часть столбца, поэтому awk '{print $1}'
должен дать мне
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
GypsyCosmonaut
источник
источник
\
особенный? Например,a\\ b
одно поле или два?[[:space:]]
на\[[:space:]]
, исходные данные заменили их. После того , как исходные данные в первой колонке , ограниченной только пробелами и не\[[:space:]]
, я бы заменить\[[:space:]]
с ,[[:space:]]
и я осталась бы с исходными данными обратно , которая имеет \.Ответы:
с помощью gnu awk (
gawk
) вы можете использовать некоторые утверждения нулевой длины, такие как\<
или\>
:но, к сожалению, не полноценные из
perl
илиpcre
(например(?<!\\)
,(?<=\w)
и т. д.):источник
Вы можете заменить \ space чем-то другим и потом снова вернуться.
источник
\034
:awk '{gsub(/\\ /,SUBSEP,$0); val=$1; gsub(SUBSEP,"\\ ",val); print val}' file
С GNU
grep
или совместимым:Или с ERE:
Это рассматривается
\
как оператор цитирования, для пробела в качестве разделителя, но и для самого себя. То есть приfoo\\ bar
вводе возвращаетсяfoo\\
.источник
С просто
sed
:Или короче:
Это
(([^\]*\\ ){1,})?[^ ]*
соответствует:[^\]*\\
: все, что не является обратной косой чертой, которая заканчивается обратной косой чертой, за которой следует пробел (обратите внимание, что\
внутри класса символов не требуется экранировать, а снаружи -).([^\]*\\ ){1,}
: сопоставление выше с одним или несколькими моментами вхождений.(([^\]*\\ ){1,})?
: это необязательно при использовании(...)?
; мы могли бы использовать([^\]*\\ ){0,}
вместо этого или([^\]*\\ )*
.((([^\]*\\ ){1,})?[^ ]*)
: совпадения выше, которые являются необязательными, за которыми следует все, что не является пробелом, и хранится как групповое совпадение с\1
обратной ссылкой.((([^\]*\\ ){1,})?[^ ]*).*
: совпадения выше(...)
и все остальное.*
.тогда заменяющая часть просто распечатывает,
\1
которая является выходом:источник