Sed : filtrer par un numéro de colonne

Résolu
tonticoeur -  
 tonticoeur -
Bonjour,

Je suis en présence de fichiers de log dont chaque ligne fait strictement 132 caractères.
Je souhaite afficher les lignes de ces fichiers qui ont le caractère 4 en position 81 à l'aide de l'outil SED.

J'ai chercher un peu partout sur le net mais sans résultat. Je vous soumet donc aujourd'hui cette question.

Merci de votre aide.

2 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

sed n'est ps fait pour ça, il te faut voir du côté de "awk", beaucoup plus adapté à ce genre de manip...

jp@MDK:~/tmpfs ssh$ cat plop
abcdefghijkl
abcdefghdjkl
abcdefghijkl
abcdefghfjkl
abcdefghijkl
abcdefghfjkl
abcdefghdjkl
abcdefghijkl

jp@MDK:~/tmpfs ssh$ awk 'substr($0,4,1) == substr($0,9,1) {print $0}' plop
abcdefghdjkl
abcdefghdjkl

jp@MDK:~/tmpfs ssh$

Remplace "9,1" par "81,1".
;-))
0
lami20j
 
Salut,

Il n'y a pas des références arrièreres pour sed ?!

Voici en perl
perl -ne 'print if /^.{3}(.).{4}\1/' plop

A remplacer {4} avec {76}
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

Si, mais c'est le genre de truc auquel je ne pense jamais ;-((

sed -n '/^.\{3\}\(.\).\{4\}\1/p' plop
ou
sed -rn '/^.{3}(.).{4}\1/p' plop

Merci ;-))
0
lami20j > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
 
Re,

Et moi j'ai testé avec sed mais j'ai oublié de mettre les backslash avant les paranthèses.
Je n'ai pas encore l'habitude ;-))
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896 > lami20j
 
On a oublié "egrep" dans l'histoire :

egrep '^.{3}(.).{4}\1' plop

:-))
0
lami20j > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
 
Re,

Effectivement je n'ai pas pensé à egrep. Merci.
Ca doit marcher avec n'importe quelle application en fonction de l'implémentation des références arrières.
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896 > lami20j
 
Sûrement, mais du coup 'grep' c'est le plusse mieux pour les paresseux ;-))
0