Les Allergies
Alimentaires
Posez votre question Signaler

[Shell] enlever les 11 premier caractères [Résolu]

JOBiJOBa2 96Messages postés 13 mai 2008Date d'inscription - Dernière réponse le 3 juin 2009 à 13:09
Bonjour,
J'aimerais enlever les 11 premier caractère d'une chaine.
Je la récupère d'un un fichier et veut transformer ma chaine pour la mettre dans un autre fichier.
while read line
  do

     echo "$line"
##transformation de la chaine
echo "$newline" >> newfic.txt

done < fictempo.txt

Comment retirer les 11 premier caractères de cette chaine ?
Merci d'avance
^^
Lire la suite 

[Shell] enlever les 11 premier caractères »

15 réponses
Réponse
+2
moins plus
Salut,
$ var="123456789101112"
$ echo ${var:11}
1112
;-))
jipicy- 22 mai 2008 à 12:29
Arf ;-((

N'oublie pas de préciser ton shell à chaque fois...
echo ${var} | sed 's/.\{11\}//'
;-))
JOBiJOBa2- 22 mai 2008 à 14:10
Désolé
JOBiJOBa2jipicy - 22 mai 2008 à 14:11
Okey ça fonctionne merci encore
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

En comptant les 11 premiers caractères.

Je me souviens plus trop des commandes shell.

Mais l'idée est :

Récupère line

For (0 , nb caractère , ++)
tant que < 11 je fais rien
dès que je dépasse 11 je recrée un nouvelle line caractère par caractère
fin for

Ecriture de al new line
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

juste de passage et à l'attention de jipicy, pour enlever les 11 derniers caractères, quelle serait la commande ? j'ai tenté echo ${var:0,-11} marche pô
et par la même occasion, comment enlever simultanément les 3 premiers caractères et les 3 derniers ?

echo $var | sed -e 's/.\{11\}$//' marche mais j'aimerais connaitre la solution dans l'esprit de la première commande

PS : en bash

Merci et désolé pour l'incruste
jipicy- 22 mai 2008 à 13:56
Enlever les 11 derniers :
echo ${var:0:$((${#var}-11))}
enlever simultanément les 3 premiers caractères et les 3 derniers :
echo ${var:3:$((${#var}-3))}
;-))
michelf - 3 juin 2009 à 11:32
pour enlever les 3 permiers et 3 derniers caracteres (avec sh), il faut plutot :
${chaine:3:$((${#chaine}-3-3))}
il me semble
jipicy- 3 juin 2009 à 11:34
Exact, merci pour la correction ;-))
Ajouter un commentaire
Réponse
+0
moins plus
Merci, je pensais néammoins qu'il y aurait une commande plus directe
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

je pensais néammoins qu'il y aurait une commande plus directe
Si tu pense à sed
echo $var | sed 's/^.\{3\}\(.*\).\{3\}$/\1/'

Mais bon, ce n'est pas très joli
jipicy- 3 juin 2009 à 12:20
Il y a aussi :
[tmpfs]$ var="123456789"

[tmpfs]$ expr "$var" : "...\(.*\)..."
456
;-))
lami20j- 3 juin 2009 à 12:33
Re,

Sûrement c'est plus joli.
Pour s'amuser (je n'ai pas moyens de tester ;-))
echo $var | cut -d'' -f4- | rev | cut -d'' -f4- | rev
jipicy- 3 juin 2009 à 13:09
Marche pô ;-((

cut: Le délimiteur doit être un caractère simple.

Par contre comme ça ça marche :
echo $var | cut  -b 4- | rev | cut -b 4- | rev
;-))
Ajouter un commentaire
Ce document intitulé « [Shell] enlever les 11 premier caractères » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?