Je suis relativement nouveau dans les scripts shell Unix. Voici mon problème. Je l'ai utilisé ce script ...Comment extraire une sous-chaîne correspondant à un motif à partir d'une variable de shell Unix
isql -S$server -D$database -U$userID -P$password <<EOF> $test
exec MY_STORED_PROC
go
EOF
echo $test
Pour générer ce résultat ...
Msg 257, Level 16, State 1:
Server 'MY_SERVER', Procedure 'MY_STORED_PROC':
Implicit conversion from datatype 'VARCHAR' to 'NUMERIC' is not allowed. Use
the CONVERT function to run this query.
(1 row affected)
(return status = 257)
Au lieu de faire écho à la sortie de isql, je voudrais extraire le « 257 » et le coller dans une autre variable, donc je peux retourner 257 du script. Je pense qu'une sorte de commande sed ou grep le fera, mais je ne sais pas vraiment par où commencer.
Des suggestions?
Merci. C'est pourquoi je demande: je voulais voir des codeurs Unix expérimentés résoudre un problème du monde réel, afin que je puisse apprendre à le faire moi-même. Donc, dans ce cas, la commande tail redirige la dernière ligne de $ test vers la commande sed, qui retourne ce qui est dans \\ (et) \ (en supposant que le pattern global correspond). Est-ce correct? –
Oui, tout ce qui est entre \\ (et \\) est alors donné par \ 1 dans la substitution. [0-9] \ + signifie correspondre à un ou plusieurs chiffres. –