[Shell] enlever les 11 premier caractères

Résolu/Fermé
JOBiJOBa2 Messages postés 91 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 23 avril 2009 - 22 mai 2008 à 10:33
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 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
^^
A voir également:

5 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
22 mai 2008 à 10:48
Salut,
$ var="123456789101112"
$ echo ${var:11}
1112
;-))
9
JOBiJOBa2 Messages postés 91 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 23 avril 2009 5
22 mai 2008 à 11:07
J'ai un petit problème lors de mon "echo ${var:11}", il me dit "ksh: ${var:11}: bad substitution".
Je ne vois pas ce que cela peut être.


^^
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895 > JOBiJOBa2 Messages postés 91 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 23 avril 2009
22 mai 2008 à 12:29
Arf ;-((

N'oublie pas de préciser ton shell à chaque fois...
echo ${var} | sed 's/.\{11\}//'
;-))
0
JOBiJOBa2 Messages postés 91 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 23 avril 2009 5 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
22 mai 2008 à 14:10
Désolé
0
JOBiJOBa2 Messages postés 91 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 23 avril 2009 5 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
22 mai 2008 à 14:11
Okey ça fonctionne merci encore
0
goulamass Messages postés 1426 Date d'inscription lundi 23 octobre 2006 Statut Membre Dernière intervention 11 janvier 2010 177
22 mai 2008 à 10:36
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
2
eZula Messages postés 3392 Date d'inscription samedi 26 avril 2008 Statut Contributeur Dernière intervention 8 mai 2021 392
22 mai 2008 à 16:48
Merci, je pensais néammoins qu'il y aurait une commande plus directe
1
eZula Messages postés 3392 Date d'inscription samedi 26 avril 2008 Statut Contributeur Dernière intervention 8 mai 2021 392
22 mai 2008 à 12:59
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
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
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))}
;-))
0
michelf > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
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
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895 > michelf
3 juin 2009 à 11:34
Exact, merci pour la correction ;-))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
3 juin 2009 à 12:15
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
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
3 juin 2009 à 12:20
Il y a aussi :
[tmpfs]$ var="123456789"

[tmpfs]$ expr "$var" : "...\(.*\)..."
456
;-))
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
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
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895 > lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019
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
;-))
0