Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/02/2011, à 16:13

shellp

[Résolu] Couper un nom de fichier et le stocker dans une variable(awk)

Bonjour

J'ai un script SHELL dans lequel, à un moment donné, j'ai besoin de couper les 5 premières lettres du nom du fichier et de stocker cette valeur dans une variable, pour réutiliser cette valeur dans une chaîne de caractères par la suite.

Je suis en fait dans une fonction :

BEGIN {

JE-SUIS-ICI

}

La fonction reçoit en entrée le nom du fichier.

Mon idée était la suivante :

temp = $fichier ; //je récupère le nom du fichier
mavaleur = "echo "$temp"|cut -c1-5"; //je veux stocker les 5 premières lettres du nom de fichier dans une variable
print $mavaleur ; //je veux contrôler que le résultat est le bon.


Or, la plupart du temps, quand j'essaie de modifier un peu cette commande, soit je tombe sur une valeur vide comme c'est le cas ici, soit, je tombe sur une valeur de variable par défaut qui est le nom du fichier en entrée.

Merci d'avance à tous de votre aide.
Bonne journée.

++

Dernière modification par shellp (Le 23/02/2011, à 15:16)

Hors ligne

#2 Le 22/02/2011, à 16:38

Nemesis

Re : [Résolu] Couper un nom de fichier et le stocker dans une variable(awk)

mavaleur = "echo "$temp"|cut -c1-5"

tu as essayé plutôt:
mavaleur=`echo $temp | cut -c1-5`
pour commencer?

Après faut voir si tu n'as pas des caractères parasites à éliminer avant avec sed...
(avec des ` pour l'exec, pas ' ou ")

Dernière modification par Nemesis (Le 22/02/2011, à 16:38)

Hors ligne

#3 Le 22/02/2011, à 20:19

pode

Re : [Résolu] Couper un nom de fichier et le stocker dans une variable(awk)

Sans commande externe :

$ fichier=abcdefgh
$ echo ${fichier:0:5}
abcde

Hors ligne

#4 Le 23/02/2011, à 08:20

shellp

Re : [Résolu] Couper un nom de fichier et le stocker dans une variable(awk)

Bonjour

Merci pour ces réponses rapides.

Lorsque je fais : mavaleur=`echo $temp | cut -c1-5`, le script ne s'exécute pas et me renvoie cette erreur :

awk: cmd. ligne:63: mavaleur = `echo $temp | cut -c1-5`
awk: cmd. ligne:63:             ^ caractère invalide ^ " ` " dans l'expression


Lorsque je fais :

temp = $fichier
echo ${temp:0:5}

Il me renvoie une valeur vide.


Peut-être ça va vous avancer pour m'aider, mais le seul moyen que j'ai réussi pour afficher la valeur que je souhaitais, c'est de cette façon :

commande="echo "$temp"[cut c-1-5";
system(commande);

Le problème, c'est que je n'arrive qu'à afficher la valeur, pas à la stocker dans une variable... :-/

Merci d'avance pour votre aide.
Bonne journée.



EDIT : J'ai remarqué que si je faisais un :

mavaleur = $(echo Lorem Ipsum);
commande = "echo $adec;";
system(commande)

Ca me renvoie une valeur vide au lieu de m'afficher "Lorem Ipsum". J'ai l'impression d'avoir beaucoup de mal à affecter le résultat de la commande à la variable, même avec une commande toute simpliste comme echo... :-/

Dernière modification par shellp (Le 23/02/2011, à 10:03)

Hors ligne

#5 Le 23/02/2011, à 11:51

Totor

Re : [Résolu] Couper un nom de fichier et le stocker dans une variable(awk)

si j'ai bien saisi ce que tu fais, alors là...chapeau bas 'sieur !

le C n'est pas un script shell ... hmm


-- Lucid Lynx --

Hors ligne

#6 Le 23/02/2011, à 12:11

Nemesis

Re : [Résolu] Couper un nom de fichier et le stocker dans une variable(awk)

shellp a écrit :

Ca me renvoie une valeur vide au lieu de m'afficher "Lorem Ipsum". J'ai l'impression d'avoir beaucoup de mal à affecter le résultat de la commande à la variable, même avec une commande toute simpliste comme echo... :-/

Y'a un autre moyen, mais il est un peu bourrin.
Tu ne récupère rien de ton system(), tu lui fait lancer la commande echo $temp | cut -c1-5 > tmpfile et derrière tu fais un (f)open et un (f)read pour récupérer la valeur. Et un unlink de tmpfile après.

Dernière modification par Nemesis (Le 23/02/2011, à 12:12)

Hors ligne

#7 Le 23/02/2011, à 14:15

shellp

Re : [Résolu] Couper un nom de fichier et le stocker dans une variable(awk)

Merci pour toutes vos réponses. À force de test, j'ai réussi :

$mavaleur="$(echo "$temp"|cut -c1-5)";

EDIT : Excusez-moi, mais ce qui aurait pu vous aider, c'était de préciser que j'étais dans un awk'...

Dernière modification par shellp (Le 23/02/2011, à 15:07)

Hors ligne

#8 Le 23/02/2011, à 15:33

Nemesis

Re : [Résolu] Couper un nom de fichier et le stocker dans une variable(awk)

Ah oui c'est pour ça que ma commande n'a pas marché.

Hors ligne