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

Signaler
Messages postés
91
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
23 avril 2009
-
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
-
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
^^

5 réponses

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 762
Salut,
$ var="123456789101112"
$ echo ${var:11}
1112
;-))
9
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 61225 internautes nous ont dit merci ce mois-ci

Messages postés
91
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
23 avril 2009
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.


^^
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 762 >
Messages postés
91
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
23 avril 2009

Arf ;-((

N'oublie pas de préciser ton shell à chaque fois...
echo ${var} | sed 's/.\{11\}//'
;-))
Messages postés
91
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
23 avril 2009
5 >
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020

Désolé
Messages postés
91
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
23 avril 2009
5 >
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020

Okey ça fonctionne merci encore
Messages postés
1426
Date d'inscription
lundi 23 octobre 2006
Statut
Membre
Dernière intervention
11 janvier 2010
162
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
Messages postés
3389
Date d'inscription
samedi 26 avril 2008
Statut
Contributeur
Dernière intervention
8 avril 2020
395
Merci, je pensais néammoins qu'il y aurait une commande plus directe
Messages postés
3389
Date d'inscription
samedi 26 avril 2008
Statut
Contributeur
Dernière intervention
8 avril 2020
395
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
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 762
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))}
;-))
>
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020

pour enlever les 3 permiers et 3 derniers caracteres (avec sh), il faut plutot :
${chaine:3:$((${#chaine}-3-3))}
il me semble
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 762 > michelf
Exact, merci pour la correction ;-))
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 480
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
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 762
Il y a aussi :
[tmpfs]$ var="123456789"

[tmpfs]$ expr "$var" : "...\(.*\)..."
456
;-))
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 480 >
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020

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
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 762 >
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019

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
;-))