Rechercher : dans
Par :

Awk: récupérer le xème caractère d'une ligne

Dernière réponse le 8 avr 2009 à 16:09:22 tlep, le 8 avr 2009 à 14:02:21 
 Signaler ce message aux modérateurs

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 :-)

Configuration: Windows Vista
Firefox 3.0

Meilleures réponses pour « awk: récupérer le xème caractère d'une ligne » dans :
Guide d'utilisation du Shell pour débutant VoirSHELL BASH - GUIDE D'UTILISATION - Niveau Débutant Introduction Appel aux membres CCM II. C'est quoi le shell ? III. Comment accéder à la ligne de commande IV. Les consoles virtuelles Exemple : Accéder à la console 3 depuis l'interface...
[Windows XP] Assistance / Sauvegarde / Récupération / Réparation VoirIl existe plusieurs méthodes de prévention et d'action en cas de gros pépin, préconisées dans un ordre de gravité approximativement croissant : L'assistance à distance La restauration du système La récupération automatique du système...
Comment lire un fichier ligne par ligne VoirComment lire un fichier ligne par ligne Préambule Boucle while Syntaxe Exemple Astuces Bonus Boucle for Syntaxe Préambule Une des erreurs les plus communes dans l'apprentissage des scripts "bash" sous GNU/LInux pour lire un fichier...
Java - L'API JDBC VoirIntroduction à JDBC La technologie JDBC (Java DataBase Connectivity) est un ensemble de classes permettant de développer des applications capables de se connecter à des serveurs de bases de données (SGBD). L'accès aux bases de données avec...
Les chaînes de caractères en C++ VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une...
Javascript - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractère Une chaîne de caractère est, comme son nom l'indique, une suite de caractères. On la représente par la suite de caractères encadrée par des guillemets simples (') ou doubles ("), sachant que les deux types de...

1

lami20j, le 8 avr 2009 à 14:04:46

Salut,

Je n'ai pas testé

sed 's/^.\{111\}\(.\).*/\1/' fichier
--
106485010510997108

Répondre à lami20j

2

tlep, le 8 avr 2009 à 14:05:24

A priori j'ai trouvé en fait:

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

C'est bien awk :-)

Répondre à tlep

5

lami20j, le 8 avr 2009 à 14:15:21

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

Répondre à lami20j

3

jipicy, le 8 avr 2009 à 14:08:39

Salut,

[tmpfs]$ cat plop
12345A78910
12345B78910
12345C78910
12345D78910
12345E78910
12345F78910

[tmpfs]$ sed 's/.\{5\}\(.\).*/\1/' plop
A
B
C
D
E
F

[tmpfs]$
;-))
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

4

jipicy, le 8 avr 2009 à 14:09:35

Oups...

Mieux vaut tard que jamais ;-))
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

6

lami20j, le 8 avr 2009 à 14:16:13

Salut,

Ben, non.
Tu viens de confirmer ce que je n'ai pas pu testé ;-)) 106485010510997108

Répondre à lami20j

7

dubcek, le 8 avr 2009 à 14:20:05
  • +2

Hello
et aussi

$ cut --byte=6 < plop
A
B
C
D
E
F

Répondre à dubcek

8

lami20j, le 8 avr 2009 à 14:21:30

Salut,

Yes, et pour le moment c'est la plus simple ;-) 106485010510997108

Répondre à lami20j

9

dubcek, le 8 avr 2009 à 14:46:35

En fait
cut -b6
pour être portable sur les Unixes non GNU/Linux

Répondre à dubcek

10

fiddy, le 8 avr 2009 à 15:05:33

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
Google is your friend

Répondre à fiddy

11

lami20j, le 8 avr 2009 à 15:07:01

Salut,

(Oui je sais, je suis un rabat-joie ^^)..

Ben, un o****** ne dure pas très longtemps de toute façon ;-DDDDD 106485010510997108

Répondre à lami20j

12

jipicy, le 8 avr 2009 à 15:14:18

[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 ;-\

;-)) $ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

13

fiddy, le 8 avr 2009 à 15:50:52

Etrange. Que vaut ta variable LANG ?
Google is your friend

Répondre à fiddy

14

jipicy, le 8 avr 2009 à 15:52:31

$ echo $LANG
fr_FR
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

15

 fiddy, le 8 avr 2009 à 16:09:22

La voilà l'explication ^^.
En fr_FR.UTF-8, la solution par byte ne marche pas puisque é sera codé sur deux bytes.
Google is your friend

Répondre à fiddy