Voici un awk
approche. L'idée ici est que awk
( ou pour être précis, GNU awk
) peut utiliser plusieurs caractères comme séparateurs. Ainsi, on peut utiliser \
y "
comme séparateurs, pour extraire la chaîne de caractères souhaitée avec :
awk -F '[\\\\"]' '{print $3}'
Notez les multiples \
, qui sont nécessaires pour échapper à la barre oblique inverse et éviter qu'elle soit interprétée par le Shell comme un échappement pour le caractère suivant.
Avec le echo
dans la question,
$ echo "AT^SYSCFGEX=\\\"0201\\\",3fffffff,2,4,7fffffffffffffff,," | awk -F '[\\\\"]' '{print $3}'
0201
Alternativement, nous pourrions simplement utiliser "
comme séparateur et couper le dernier \
via substr()
fonction :
$ echo "AT^SYSCFGEX=\\\"0201\\\",3fffffff,2,4,7fffffffffffffff,," | awk -F '"' '{print substr($2,1,length($2)-1)}'
0201