[SHELL] Extraire une chaine de caractere
karineb77
-
karineb77 -
karineb77 -
Bonjour,
Je cherche à extraire d'un fichier une chaine de caractere se trouvant sur la premiere ligne en position 57 et de longueur 5.
Je veux ensuite l'affecter à une variable pour pouvoir ensuite tester sa valeur.
Je voudrais également supprimer les espaces de cette chaine.
Comment faire ?
J'ai essayé avec awk mais je n'arrive pas à affecter le resultat à une variable externe en faisant cela
awk '{print substr($0,57,5)}' monfichier.txt | head -n1
Merci d'avance pour votre aide
Karine
Je cherche à extraire d'un fichier une chaine de caractere se trouvant sur la premiere ligne en position 57 et de longueur 5.
Je veux ensuite l'affecter à une variable pour pouvoir ensuite tester sa valeur.
Je voudrais également supprimer les espaces de cette chaine.
Comment faire ?
J'ai essayé avec awk mais je n'arrive pas à affecter le resultat à une variable externe en faisant cela
awk '{print substr($0,57,5)}' monfichier.txt | head -n1
Merci d'avance pour votre aide
Karine
Configuration: Windows XP Firefox 2.0.0.4
4 réponses
-
Salut,
Essaye avec "sed" :var=$(sed -nre '1 {s/.{56}(.{5}).*/\1/; s/ //gp}' fichier) -
Quoi qu'avec "awk" ça donnerait plutôt :
awk 'NR==3 { print substr($0,57,5) }' fichier;-))
-
Merci pour tes réponses.
Pour awk, je pense plutôt qu'il faut tester NR==1 si je veux la première ligne ?
Sinon, je n'arrive pas à exécuter la commande sed :
quand je tape cette commande sed -ne '1 {s/.{56}(.{5}).*/\1/; s/ //gp}' monfichier,
j'ai le résultat suivant :
sed: Function 1 {s/.{56}(.{5}).*/\1/; s/ //gp} cannot be parsed.
Karine -
Hello,
Finalement, j'ai réussi en faisant comme cela car je n'arrivais pas à utiliser la commande sed que tu m'avais passée.
var=`awk 'NR==1 {print substr($0,57,5)}' $fic |sed 's/ *//'`
Il y a surement plus simple mais çà marche :-)
Karine