Rechercher caracteres ascii etendus dans un fichier
Fermé
yakitori1
Messages postés
62
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
14 avril 2024
-
19 nov. 2013 à 16:31
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 - 3 déc. 2013 à 15:42
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 - 3 déc. 2013 à 15:42
A voir également:
- Rechercher caracteres ascii etendus dans un fichier
- Caractère ascii - Guide
- Rechercher ou entrer l'adresse - Guide
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
14 réponses
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
Modifié par dubcek le 20/11/2013 à 08:41
Modifié par dubcek le 20/11/2013 à 08:41
hello
essayer
essayer
tr -d "\200-\377" < fichier
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
19 nov. 2013 à 16:59
19 nov. 2013 à 16:59
Salut,
Une solution pourrait être de supprimer ou de substituer le code octal et/ou hexa de ces caractères via la commande sed...
Peut être qu'en ayant un exemple concret on pourrait t'aider un peu mieux ;-\
Une solution pourrait être de supprimer ou de substituer le code octal et/ou hexa de ces caractères via la commande sed...
Peut être qu'en ayant un exemple concret on pourrait t'aider un peu mieux ;-\
yakitori1
Messages postés
62
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
14 avril 2024
Modifié par yakitori1 le 19/11/2013 à 17:21
Modifié par yakitori1 le 19/11/2013 à 17:21
merci pour ta réponse
le fichier fait 20,000 lignes environ
par exemple je viens d'avoir un nouveau plantage sur cette zone:
---------
With" Direction="Next" EventID="3757" AssociatedFile="mx.113
722.0000.S.in.xml">MOODY\264S CORP
8771 <Focus FocusCode="Browse(9)
--------------
donc j'aimerais pouvoir rapidement trouver tout ces \XXX pour pouvoir corriger avant de lancer l'execution. Le code XXX est à chaque fois différent donc je ne pense pas pouvoir utiliser la commande sed.
le fichier fait 20,000 lignes environ
par exemple je viens d'avoir un nouveau plantage sur cette zone:
---------
With" Direction="Next" EventID="3757" AssociatedFile="mx.113
722.0000.S.in.xml">MOODY\264S CORP
8771 <Focus FocusCode="Browse(9)
--------------
donc j'aimerais pouvoir rapidement trouver tout ces \XXX pour pouvoir corriger avant de lancer l'execution. Le code XXX est à chaque fois différent donc je ne pense pas pouvoir utiliser la commande sed.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
19 nov. 2013 à 18:16
19 nov. 2013 à 18:16
Isole ta portion de code dans un fichier et essaie avec une de ces deux commandes :
sed 's/\xb4//' fich_entrée > fich_sortie ou sed 's/'$(echo "\0264")'//' fich_entrée > fich_sortie ou tr '\264' ' ' fich_entrée
yakitori1
Messages postés
62
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
14 avril 2024
Modifié par yakitori1 le 19/11/2013 à 19:15
Modifié par yakitori1 le 19/11/2013 à 19:15
merci mais ça ne marche pas et de plus je dois trouver n'importe quel code pas seulement \264
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
yakitori1
Messages postés
62
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
14 avril 2024
25 nov. 2013 à 17:23
25 nov. 2013 à 17:23
merci beaucoup ça marche en changeant la plage qui était trop large.
par contre j'ai besoin de trouver ces caractères dans le fichier pas les effacer. As-tu une solution?
J'ai essayé grep:
grep "\321" try2.txt
grep: RE error 25: ''\digit'' out of range.
au pire je ferai un diff entre le fichier original et le fichier purgé.
par contre j'ai besoin de trouver ces caractères dans le fichier pas les effacer. As-tu une solution?
J'ai essayé grep:
grep "\321" try2.txt
grep: RE error 25: ''\digit'' out of range.
au pire je ferai un diff entre le fichier original et le fichier purgé.
yakitori1
Messages postés
62
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
14 avril 2024
27 nov. 2013 à 12:20
27 nov. 2013 à 12:20
non en fait ça ne marche pas avec le range
seulement
tr -d "\264" < try2.txt
ou bien
tr -d "\321" < try2.txt
seulement
tr -d "\264" < try2.txt
ou bien
tr -d "\321" < try2.txt
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
26 nov. 2013 à 12:06
26 nov. 2013 à 12:06
essayer
awk -F "" '{x=0; for(n=1; n<=NF; n++)if($n > "\177" && $n < "\377")x++; if(x)print $0}' fichier
yakitori1
Messages postés
62
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
14 avril 2024
27 nov. 2013 à 10:40
27 nov. 2013 à 10:40
bonjour merci mais ça donne ça:
bash$ awk -F "" '{x=0; for(n=1; n<=NF; n++)if($n > "\177" && $n < "\377")x++; if(x)print $0}' iss
awk: can't open {x=0; for(n=1; n<=NF; n++)if($n > "\177" && $n < "\377")x++; if(x)print $0}
ça me parait un peu difficile de parser le fichier entier avec hawk.
bash$ awk -F "" '{x=0; for(n=1; n<=NF; n++)if($n > "\177" && $n < "\377")x++; if(x)print $0}' iss
awk: can't open {x=0; for(n=1; n<=NF; n++)if($n > "\177" && $n < "\377")x++; if(x)print $0}
ça me parait un peu difficile de parser le fichier entier avec hawk.
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
27 nov. 2013 à 12:29
27 nov. 2013 à 12:29
essayer
awk 'BEGIN{FS=""} {x=0; for(n=1; n<=NF; n++)if($n > "\177" && $n < "\377")x++; if(x)print $0}' iss
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
Modifié par dubcek le 27/11/2013 à 12:33
Modifié par dubcek le 27/11/2013 à 12:33
test
yakitori1
Messages postés
62
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
14 avril 2024
27 nov. 2013 à 12:32
27 nov. 2013 à 12:32
avec sed ça ne marche qu'avec les codes commençant par 0 mais pas ceux commençant par 1 ou 2 genre 321 ou 264
j'ai essayé en hexadecimal : 321 c'est d1
donc:
bash$ echo -e 'ESPA\xd1A'| sed -e 's/'$(echo "\xd1")'/NI/g'
ESPAÑA
ça ne marche pas
la seule solution que j'ai pour l'instant (merci dubcek):
tr -d "\264" < try2.txt
puis un diff du résultat
et ce pour chaque caractère spécial!
donc pas terrible...
j'ai essayé en hexadecimal : 321 c'est d1
donc:
bash$ echo -e 'ESPA\xd1A'| sed -e 's/'$(echo "\xd1")'/NI/g'
ESPAÑA
ça ne marche pas
la seule solution que j'ai pour l'instant (merci dubcek):
tr -d "\264" < try2.txt
puis un diff du résultat
et ce pour chaque caractère spécial!
donc pas terrible...
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
Modifié par dubcek le 27/11/2013 à 12:41
Modifié par dubcek le 27/11/2013 à 12:41
le forum supprime ma commande !!
essayer de remplacer -F "" '{x= par 'BEGIN{FS=""} {x=
essayer aussi avec nawk
essayer de remplacer -F "" '{x= par 'BEGIN{FS=""} {x=
essayer aussi avec nawk
yakitori1
Messages postés
62
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
14 avril 2024
27 nov. 2013 à 13:01
27 nov. 2013 à 13:01
merci dubcek
j'ai essayé:
awk 'BEGIN{FS=""} {x=0; for(n=1; n<=NF; n++)if($n > "\177" && $n < "\377")x++; if(x)print $0}' try2.txt
et
nawk 'BEGIN{FS=""} {x=0; for(n=1; n<=NF; n++)if($n > "\177" && $n < "\377")x++; if(x)print $0}' try2.txt
mais ça ne retourne rien!
n'y aurait-il pas une solution avec perl?
j'ai essayé:
awk 'BEGIN{FS=""} {x=0; for(n=1; n<=NF; n++)if($n > "\177" && $n < "\377")x++; if(x)print $0}' try2.txt
et
nawk 'BEGIN{FS=""} {x=0; for(n=1; n<=NF; n++)if($n > "\177" && $n < "\377")x++; if(x)print $0}' try2.txt
mais ça ne retourne rien!
n'y aurait-il pas une solution avec perl?
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
Modifié par dubcek le 27/11/2013 à 13:51
Modifié par dubcek le 27/11/2013 à 13:51
awk '{x=0; for(n=1; n<=length(); n++)if(s=substr($0, n, 1) > "\177" && s < "\377")x++; if(x)print $0}'
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
Modifié par dubcek le 27/11/2013 à 14:29
Modifié par dubcek le 27/11/2013 à 14:29
awk Solaris ne comprend peut-être pas FS=""
yakitori1
Messages postés
62
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
14 avril 2024
27 nov. 2013 à 16:22
27 nov. 2013 à 16:22
encore mais ça ne marche pas
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
27 nov. 2013 à 16:26
27 nov. 2013 à 16:26
que répondent avec tout les awk de Solaris (awk, nawk, etc)
mawk est le vieil awk de Linuix
mawk est le vieil awk de Linuix
$ echo tollé | awk '{print length(), $0}'
5 tollé
$
$ echo tollé | mawk '{print length(), $0}'
6 tollé
$
yakitori1
Messages postés
62
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
14 avril 2024
Modifié par yakitori1 le 28/11/2013 à 07:47
Modifié par yakitori1 le 28/11/2013 à 07:47
salut dubcek,
bash$ echo toll | awk '{print length(), $0}'
4 toll
bash$ echo toll | mawk '{print length(), $0}'
-bash: mawk: command not found
bash$ echo toll | nawk '{print length(), $0}'
4 toll
bash$ echo toll | awk '{print length(), $0}'
4 toll
bash$ echo toll | mawk '{print length(), $0}'
-bash: mawk: command not found
bash$ echo toll | nawk '{print length(), $0}'
4 toll
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
Modifié par dubcek le 28/11/2013 à 08:18
Modifié par dubcek le 28/11/2013 à 08:18
pas toll mais tollé
il faut tester avec un caractère étendu
il faut tester avec un caractère étendu
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
27 nov. 2013 à 15:57
27 nov. 2013 à 15:57
on fabrique un range pour egrep, essayer
egrep "$(awk 'BEGIN{for(n=0264; n<=0321; n++)printf "\\%o|", n}')" fichier
yakitori1
Messages postés
62
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
14 avril 2024
28 nov. 2013 à 07:48
28 nov. 2013 à 07:48
il ne fait rien comme si il manquait un paramètre
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
Modifié par dubcek le 28/11/2013 à 08:16
Modifié par dubcek le 28/11/2013 à 08:16
un message d'erreur ?
qu'affiche la commande
qu'affiche la commande
awk 'BEGIN{for(n=0264; n<=0321; n++)printf "\\%o|", n}'
yakitori1
Messages postés
62
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
14 avril 2024
28 nov. 2013 à 09:32
28 nov. 2013 à 09:32
bash$ awk 'BEGIN{for(n=0264; n<=0321; n++)printf "\\%o|", n}'
\410|\411|\412|\413|\414|\415|\416|\417|\420|\421|\422|\423|\424|\425|\426|\427|\430|\431|\432|\433|\434|\435|\436|\437|\440|\441|\442|\443|\444|\445|\446|\447|\450|\451|\452|\453|\454|\455|\456|\457|\460|\461|\462|\463|\464|\465|\466|\467|\470|\471|\472|\473|\474|\475|\476|\477|\500|\501|
\410|\411|\412|\413|\414|\415|\416|\417|\420|\421|\422|\423|\424|\425|\426|\427|\430|\431|\432|\433|\434|\435|\436|\437|\440|\441|\442|\443|\444|\445|\446|\447|\450|\451|\452|\453|\454|\455|\456|\457|\460|\461|\462|\463|\464|\465|\466|\467|\470|\471|\472|\473|\474|\475|\476|\477|\500|\501|
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
28 nov. 2013 à 10:27
28 nov. 2013 à 10:27
et avec nawk
yakitori1
Messages postés
62
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
14 avril 2024
28 nov. 2013 à 10:47
28 nov. 2013 à 10:47
bash$ nawk 'BEGIN{for(n=0264; n<=0321; n++)printf "\\%o|", n}'
\410|\411|\412|\413|\414|\415|\416|\417|\420|\421|\422|\423|\424|\425|\426|\427|\430|\431|\432|\433|\434|\435|\436|\437|\440|\441|\442|\443|\444|\445|\446|\447|\450|\451|\452|\453|\454|\455|\456|\457|\460|\461|\462|\463|\464|\465|\466|\467|\470|\471|\472|\473|\474|\475|\476|\477|\500|\501|
\410|\411|\412|\413|\414|\415|\416|\417|\420|\421|\422|\423|\424|\425|\426|\427|\430|\431|\432|\433|\434|\435|\436|\437|\440|\441|\442|\443|\444|\445|\446|\447|\450|\451|\452|\453|\454|\455|\456|\457|\460|\461|\462|\463|\464|\465|\466|\467|\470|\471|\472|\473|\474|\475|\476|\477|\500|\501|