Bonjour,
Si par exemple j'ai une chaîne de caractères de 400 caractères, est il possible d'insérer une autre chaîne de caractères au dela du 255ème caractère?
Merci d'avance pour votre réponse.
Bonjour,
Si par exemple j'ai une chaîne de caractères de 400 caractères, est il possible d'insérer une autre chaîne de caractères au dela du 255ème caractère?
Merci d'avance pour votre réponse.
Oui, c'est possible. Tu ne nous donnes malheureusement pas assez de renseignements pour que l'on comprenne ce que tu ne comprends pas ou l'erreur que tu rencontres.
Voici mon code :
Lorsque la commande est exécutée, j'ai une erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 POSITION=300 CHAINE=toto FILE=/apps/bin/toto.txt sed "s/\(.\{$(expr ${POSITION})\}\)/\1${CHAINE}/" ${FILE}
L'erreur n'est pas présente tant que je ne mets pas de POSITION avec une valeur inférieure ou égale à 255 caractères.sed: Function s/\(.\{256\}\)/\1toto/ cannot be parsed.
Bonjour,
Je ne vois pas l'interêt de
Code : Sélectionner tout - Visualiser dans une fenêtre à part $(expr ${POSITION})suffit.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $POSITION
En bash, ça fonctionne
Sinon, on peut faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part cut -c-400 ${FILE} | sed "s/$/$CHAINE/"
Merci pour ta réponse, je précise que j'utilise du ksh.
Concernant la commande cut que tu évoques, elle ne permet pas de conserver la partie de la ligne qui était placée après le 400ème caractère. Hors il faut que je garde cette partie.
Salut,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $ echo "$A" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $ echo $A | wc -c 600 $ pos=300;cha=TOTO
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $ sed "s/.\{1,${pos}\}/&${cha}/" <<<${A} aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTOTOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
N_BaH :
J'utilise la version 93
zipe31 :
J'ai la même erreur avec ton code :
sed: Function s/.\{1,300\}/&TOTO/ cannot be parsed.
Quel système d'exploitation ?
Quelle version de sed (sed --version) ?
Bien sûr, à adapter si plusieurs lignes dans le fichier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part resul=`cut -c-400 ${FILE} | sed "s/$/$CHAINE/"` `cut -c401- ${FILE}`
Tu aurais du poster dans la section Unix et non dans GNU/Linux
Essaye de taper "sed" tout seul.Je n'arrive pas en revanche à trouver la version du sed. J'ai un "sed: illegal option -- -"
Si ça ne marche pas essaye strings sed | grep -i ver (source)
...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 t="texte à ajouter" f=$(<fichier) echo "${f::200} $t ${f:200}"
?
Bonjour,
Si la méthode de N_BaH ne fonctionne pas et que perl est disponible sur ton AIX, tu peux faire la même chose qu'en sed:
Sinon, tu peux toujours le faire en sed mais il faut le moduler pour qu'il puisse dépasser la limite des 255 caractères par argument comme l' exemple ci dessous mais tu seras limité à 255 caractères fois 9 arguments:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $ POSITION=300 $ XX="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" $ echo $XX | perl -p -e "s/(.{${POSITION}})/\1toto/" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatotoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $ POSITION1=255 $ POSITION2=45 $ echo $XX | sed "s/\(.\{${POSITION1}\}\)\(.\{${POSITION2}\}\)/\1\2toto/" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatotoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
N_BaH : cette syntaxe ne marche pas sur mon environnement. Merci quand même
disedorgue : Ta méthode en PERL fonctionne correctement, mais pas la deuxième (seule la première insertion au 255ème caractère marche)... Merci à toi aussi, j'ai maintenant enfin une solution
J'ai essayé de chercher sur le net un moyen d'augmenter la limitation de 255 caractères mais je ne trouve rien, je vais donc rester je pense sur la solution perl, sauf si quelqu'un a une idée pour augmenter cette taille.
En tout cas merci à tous
A part en changeant de sed (celui de gnu), tu ne pourras pas modifier la limitation à 255.
Mais à priori, si la solution sed que je t'ai donné ne fonctionne pas, cela doit vouloir dire que ce n'est même pas au niveau de la taille du buffer des arguments mais carrément au niveau du buffer de ligne.
Ce qui n'est pas trop étrange puisque historiquement, une ligne en shell était limitée à 255 caractères.
Je ne vois pas de solution plus simple que le perl...
Partager