[Shell] enlever les 11 premier caractères

Résolu
JOBiJOBa2 Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
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   Statut Modérateur Dernière intervention   4 896
 
Salut,
$ var="123456789101112"
$ echo ${var:11}
1112
;-))
9
JOBiJOBa2 Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   5
 
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   Statut Modérateur Dernière intervention   4 896 > JOBiJOBa2 Messages postés 91 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   5 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
 
Désolé
0
JOBiJOBa2 Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   5 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
 
Okey ça fonctionne merci encore
0
goulamass Messages postés 1426 Date d'inscription   Statut Membre Dernière intervention   177
 
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 3391 Date d'inscription   Statut Contributeur Dernière intervention   392
 
Merci, je pensais néammoins qu'il y aurait une commande plus directe
1
eZula Messages postés 3391 Date d'inscription   Statut Contributeur Dernière intervention   392
 
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   Statut Modérateur Dernière intervention   4 896
 
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   Statut Modérateur Dernière intervention  
 
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   Statut Modérateur Dernière intervention   4 896 > michelf
 
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   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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   Statut Modérateur Dernière intervention   4 896
 
Il y a aussi :
[tmpfs]$ var="123456789"

[tmpfs]$ expr "$var" : "...\(.*\)..."
456
;-))
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
 
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   Statut Modérateur Dernière intervention   4 896 > lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
 
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