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
Bonjour,


est-il possible avec awk (ou autre) de récupérer par exemple le 112ème caractère de chaque ligne pour un fichier donné ?


Merci :-)

7 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
8 avril 2009 à 14:20
hello
et aussi

$ cut --byte=6 < plop
A
B
C
D
E
F
3
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 567
8 avril 2009 à 14:21
Salut,

Yes, et pour le moment c'est la plus simple ;-)
0
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
A priori j'ai trouvé en fait:

toto="abcd"
echo "$toto"|awk '{ print substr($0,2,1) }'
=>b

C'est bien awk :-)
1
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 567
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
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
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
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]$
;-))
1
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 567
8 avril 2009 à 14:04
Salut,

Je n'ai pas testé
sed 's/^.\{111\}\(.\).*/\1/' fichier
--
106485010510997108
0

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 895
8 avril 2009 à 14:09
Oups...

Mieux vaut tard que jamais ;-))
0
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 567
8 avril 2009 à 14:16
Salut,

Ben, non.
Tu viens de confirmer ce que je n'ai pas pu testé ;-))
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
8 avril 2009 à 14:46
en fait
cut -b6
pour être portable sur les Unixes non GNU/Linux
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
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
0
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 567
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
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
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 ;-\

;-))
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835 > 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
Etrange. Que vaut ta variable LANG ?
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895 > 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
$ echo $LANG
fr_FR
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835 > 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
La voilà l'explication ^^.
En fr_FR.UTF-8, la solution par byte ne marche pas puisque é sera codé sur deux bytes.
0