je galère sur un problème qui doit être assez simple ..mais bon .. je suis débutant
Voilà mon script de test ..
Je dois récupérer dans une variable le resultat de la procédure Oracle rcdcurval ...
Au lancement de la requête Oracle, je supprime l'affichage de l'entête et le rapport de l'exécution de cette requête, de manière à ne recupérer que la valeur de ma séquence (rcdcurval est censée etre comprise entre 0 et 365).
Mon souci est que je récupère une variable sur 7 caractères avec des blancs. En faisait CURVALCOR=`echo -n "$CURVAL" | sed 's/ //g' ` j'arrive à supprimer des blancs .. mais il me reste un saut de ligne ... en hexa ça donne 0A 20 20 20 20 20 31 OA pour la variable CURVAL
Ce numero de sequence doit me servir à renseigner un nom de fichier ... <nom_de_fichier>nnn.txt ou nnn est le numero de sequence égal à $CURVAL.
Pouvez vous me dire comment supprimer le retour à la ligne que contient la variable $CURVAL ?
Quel est la méthode pour enlever le saut de ligne .. ou comment avec un sed ... faire le s/??//g que vaut ??
Avec mes remerciements ..
#!/bin/sh
#################################
# Paramètres environnement
#################################
#
export LANG=fr_FR
export LC_ALL="fr_FR"
export LC_CTYPE=ISO-8859-1
#
#################################
# Paramètres procédure
#################################
#
JOUR=$(date +%a)-$(date +%d)-$(date +%b)-$(date +%Y)
user="RCD"
psw="RCD"
CURVAL=
CURVALCOR=
#
##################################
# Fonction Sqlplus connexion
##################################
#
function exec_connex {
if ( echo "$user/$psw@MABASE
echo "whenever sqlerror exit 1"
echo "$1"
echo "exit"
) | sqlplus -s
then
return 0
else
return 1
fi
}
##################################
# Fonction proc sql
##################################
#
function exec_proc {
CURVAL=$(( echo "set feedback off
set heading off
set numwidth 3
var result number
execute rcdcurval(:result)
print :result
exit"
) | sqlplus -s $user/$psw 2>/dev/null)
}
### FIN FONCTION PROCEDURE #####
#
if exec_connex
then exec_proc
echo "valeur de CURVAL : ${CURVAL}"
echo "longueur de CURVAL : ${#CURVAL}"
else
echo ""
echo "========================================="
echo "= Anomalie connexion Sqlplus pour $user ="
echo "========================================="
echo "";
exit;
fi;
##################################
# TEST RESULTAT
##################################
#
CURVALCOR=`echo -n "$CURVAL" | sed 's/ //g' `
echo "curvalcor vaut apres le sed : ${CURVALCOR}"
echo "longueur de curvalcor : ${#CURVALCOR}"
echo ""
echo "${CURVAL}"
echo ""
CURVALCOR=`cut -b "${#CURVAL}" $CURVAL`
echo "valeur modifiée par cut"
echo "$CURVALCOR longueur ${#CURVALCOR}"
# pourquoi faire simple
Posté par fearan . Évalué à 1.
chez moi je fait un bête coupe=$(echo ${vra}) et ca me supprime les espaces et retour a la ligne :)
sinon avec sed au lieux de couper ce qui t'interesse pas, prence ce que tu veux avec \\w+
ps : si je me souvient bien début de ligne c'est ^
fin de ligne c'est $
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: pourquoi faire simple
Posté par turlut . Évalué à 1.
je suis débutant Linux ..désolé .. il me manque franchement les bases.
# À propos de sed
Posté par Sisyphe Plâtrier . Évalué à 1.
plein de bonnes choses.
My2c
# tr
Posté par netsurfeur . Évalué à 3.
tr -d ' \n'
ou
tr -d '[:space:]'
:space: représente tous les caractères d'espacement; tu retires donc les espaces, sauts de lignes et tabulations.
[^] # Re: tr
Posté par turlut . Évalué à 1.
Merci.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.