Sed RE error: invalid repetition count(s)
leaiolia
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
je souhaite utiliser la meme expression afin de substituer une chaine qui se trouve a plus que 255 nieme caractaires dans une ligne.
sed 's/\(.\{18\}\).\{8\}\(.*\)/\1'$cmp'\2/' tmp >> tmpout
ca marche
par contre
sed 's/\(.\{940\}\).\{8\}\(.*\)/\1'$cmp'\2/' tmp >> tmpout
error:
sed: 1: "s/\(.\{930\}\).\{8\}\(. ...": RE error: invalid repetition count(s)
Merci d avance pour vos suggestions.
je souhaite utiliser la meme expression afin de substituer une chaine qui se trouve a plus que 255 nieme caractaires dans une ligne.
sed 's/\(.\{18\}\).\{8\}\(.*\)/\1'$cmp'\2/' tmp >> tmpout
ca marche
par contre
sed 's/\(.\{940\}\).\{8\}\(.*\)/\1'$cmp'\2/' tmp >> tmpout
error:
sed: 1: "s/\(.\{930\}\).\{8\}\(. ...": RE error: invalid repetition count(s)
Merci d avance pour vos suggestions.
A voir également:
- Re error: invalid repetition count(s)
- Re ettre clavier azerty - Guide
- Invalid bios image ✓ - Forum BIOS
- Re mail - Forum Mail
- Fan error lenovo - Forum Refroidissement
- Cmos checksum error ✓ - Forum Carte-mère/mémoire
3 réponses
Salut,
On peut avoir un aperçu de la ligne matchée ainsi que de la commande réelle employée et du message d'erreur (copier/coller depuis le shell ? Merci ;-)
On peut avoir un aperçu de la ligne matchée ainsi que de la commande réelle employée et du message d'erreur (copier/coller depuis le shell ? Merci ;-)
merci pour votre retour,
voici la contenu de la variable
cmp=10000000
si j execute la commande suivant sur un fichier contenant des 1600 caractaires par ligne
exemple :
$ cat hhh |wc -c
450
sed 's/\(.\{18\}\).\{6\}\(.*\)/\110002\2/' hhh
aaaaaaaaaaaaaaaaaa10002aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2 eme exemple $ sed 's/\(.\{200\}\).\{6\}\(.*\)/\110002\2/' hhh
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa10002aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3 eme exemple : $ sed 's/\(.\{259\}\).\{6\}\(.*\)/\110002\2/' hhh
sed: 1: "s/\(.\{259\}\).\{6\}\(. ...": RE error: invalid repetition count(s)
y a il une variable a seter afin d augmenter le buffer de sed ?? car j ai l impression que ca donne un buffer overflow !!
Merci d avance.
voici la contenu de la variable
cmp=10000000
si j execute la commande suivant sur un fichier contenant des 1600 caractaires par ligne
exemple :
$ cat hhh |wc -c
450
sed 's/\(.\{18\}\).\{6\}\(.*\)/\110002\2/' hhh
aaaaaaaaaaaaaaaaaa10002aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2 eme exemple $ sed 's/\(.\{200\}\).\{6\}\(.*\)/\110002\2/' hhh
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa10002aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3 eme exemple : $ sed 's/\(.\{259\}\).\{6\}\(.*\)/\110002\2/' hhh
sed: 1: "s/\(.\{259\}\).\{6\}\(. ...": RE error: invalid repetition count(s)
y a il une variable a seter afin d augmenter le buffer de sed ?? car j ai l impression que ca donne un buffer overflow !!
Merci d avance.
Chez moi ça marche bien quel que soit la place choisie ;-\
Quel système ? GNU/Linux ? UNIX ?
Quelle version de sed ?
Pour le buffer, il existe une option :
A tester...
$ sed 's/\(.\{440\}\).\{6\}\(.*\)/\110002\2/' plop aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa10002aa
Quel système ? GNU/Linux ? UNIX ?
Quelle version de sed ?
Pour le buffer, il existe une option :
-u, --unbuffered load minimal amounts of data from the input files and flush the output buffers more often
A tester...
En jetant un oeil à "info sed" on trouve :
5 GNU 'sed''s Limitations and Non-limitations ********************************************* For those who want to write portable 'sed' scripts, be aware that some implementations have been known to limit line lengths (for the pattern and hold spaces) to be no more than 4000 bytes. The POSIX standard specifies that conforming 'sed' implementations shall support at least 8192 byte line lengths. GNU 'sed' has no built-in limit on line length; as long as it can 'malloc()' more (virtual) memory, you can feed or construct lines as long as you like. However, recursion is used to handle subpatterns and indefinite repetition. This means that the available stack space may limit the size of the buffer that can be processed by certain patterns.
hello
et avec awk
et avec awk
$ printf "%.sa" {1..512} | awk '{print substr($1, 1, 500) 110002 substr($1, 507)}' aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa110002aaaaaa $