Awk: récupérer le xème caractère d'une ligne
Résolu/Fermé
tlep
Messages postés
596
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
25 octobre 2012
-
8 avril 2009 à 14:02
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 8 avril 2009 à 16:09
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 8 avril 2009 à 16:09
A voir également:
- Shell substr
- GREP, AWK pour chercher une IP . ✓ - Forum Debian
- DNS_PROBE_FINISHED_NXDOMAIN : dnsapi.dll (Win32:Patched-AWK) ✓ - Forum Virus
- Supprimer des lignes avec awk ou sed ✓ - Forum Shell
- Fonctionnement de foreach et awk et set ✓ - Forum Shell
- Commande équivalent à Sed, awk, tail,head en powershell ! - Forum Shell
7 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
8 avril 2009 à 14:20
8 avril 2009 à 14:20
hello
et aussi
$ cut --byte=6 < plop
A
B
C
D
E
F
et aussi
$ cut --byte=6 < plop
A
B
C
D
E
F
tlep
Messages postés
596
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
25 octobre 2012
118
8 avril 2009 à 14:05
8 avril 2009 à 14:05
A priori j'ai trouvé en fait:
toto="abcd"
echo "$toto"|awk '{ print substr($0,2,1) }'
=>b
C'est bien awk :-)
toto="abcd"
echo "$toto"|awk '{ print substr($0,2,1) }'
=>b
C'est bien awk :-)
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
8 avril 2009 à 14:15
8 avril 2009 à 14:15
Re,
Non, ce n'est pas bien. Perl c'est bien :-DDDD
Je n'ai pas moyen de tester, mais ça doit être quelque chose comme ça
106485010510997108
Non, ce n'est pas bien. Perl c'est bien :-DDDD
Je n'ai pas moyen de tester, mais ça doit être quelque chose comme ça
perl -ne 'print $1 if /^.{111}(.)/' fichier perl -ne 'print substr($_,111,1)' fichier perl -ne '($x)=unpack("x111 A1",$_);print "$x\n";' fichier--
106485010510997108
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
8 avril 2009 à 14:08
8 avril 2009 à 14:08
Salut,
[tmpfs]$ cat plop 12345A78910 12345B78910 12345C78910 12345D78910 12345E78910 12345F78910 [tmpfs]$ sed 's/.\{5\}\(.\).*/\1/' plop A B C D E F [tmpfs]$;-))
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
8 avril 2009 à 14:04
8 avril 2009 à 14:04
Salut,
Je n'ai pas testé
106485010510997108
Je n'ai pas testé
sed 's/^.\{111\}\(.\).*/\1/' fichier--
106485010510997108
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
8 avril 2009 à 14:09
8 avril 2009 à 14:09
Oups...
Mieux vaut tard que jamais ;-))
Mieux vaut tard que jamais ;-))
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
8 avril 2009 à 14:16
8 avril 2009 à 14:16
Salut,
Ben, non.
Tu viens de confirmer ce que je n'ai pas pu testé ;-))
Ben, non.
Tu viens de confirmer ce que je n'ai pas pu testé ;-))
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
8 avril 2009 à 14:46
8 avril 2009 à 14:46
en fait
cut -b6
pour être portable sur les Unixes non GNU/Linux
cut -b6
pour être portable sur les Unixes non GNU/Linux
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
8 avril 2009 à 15:05
8 avril 2009 à 15:05
Salut,
Oui la solution avec cut, est la plus simple. Mais puisqu'elle se base sur le byte, s'il y a un accent dans la chaîne, ça marche plus. (Oui je sais, je suis un rabat-joie ^^).. La solution avec sed dans ce cas marche merveilleusement bien.
Ou alors :
for i in $(<plop); do echo ${i:3:1}; done
Cdlt
Oui la solution avec cut, est la plus simple. Mais puisqu'elle se base sur le byte, s'il y a un accent dans la chaîne, ça marche plus. (Oui je sais, je suis un rabat-joie ^^).. La solution avec sed dans ce cas marche merveilleusement bien.
Ou alors :
for i in $(<plop); do echo ${i:3:1}; done
Cdlt
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
8 avril 2009 à 15:07
8 avril 2009 à 15:07
Salut,
(Oui je sais, je suis un rabat-joie ^^)..
Ben, un o****** ne dure pas très longtemps de toute façon ;-DDDDD
(Oui je sais, je suis un rabat-joie ^^)..
Ben, un o****** ne dure pas très longtemps de toute façon ;-DDDDD
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
8 avril 2009 à 15:14
8 avril 2009 à 15:14
[tmpfs]$ cat plop 12345A78910 12345B78910 12345C78910 ÉÙÔ45D78910 1234éE78910 12À45F78910 [tmpfs]$ cut -b 6 plop A B C D E F [tmpfs]$Marche bien ;-\
;-))
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
8 avril 2009 à 15:50
8 avril 2009 à 15:50
Etrange. Que vaut ta variable LANG ?
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
>
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
8 avril 2009 à 15:52
8 avril 2009 à 15:52
$ echo $LANG fr_FR
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
8 avril 2009 à 16:09
8 avril 2009 à 16:09
La voilà l'explication ^^.
En fr_FR.UTF-8, la solution par byte ne marche pas puisque é sera codé sur deux bytes.
En fr_FR.UTF-8, la solution par byte ne marche pas puisque é sera codé sur deux bytes.
8 avril 2009 à 14:21
Yes, et pour le moment c'est la plus simple ;-)