Bonjour,

steve a écrit :
J'ai un long fichier de la forme
ABC(du texte)
MSD(un autre texte)
etc...
J'aimerai traiter ce fichier de tel manière qu'à la sortie je n'ai que
les 3 premiers caractères :
ABC
MSD
etc...
Sed devrait faire l'affaire non ?

a priori awk ou perl aussi mais let's try with sed

J'ai essayé (entre autres)
sed -e 's/^[A-Z][A-Z][A-Z]//' input_file

et ça me sort (fort logiquement d'ailleurs) les caractères de rang 4 et
plus, donc exactement le contraire de ce que je veux.

Comment lui dire de ne m'afficher *que* le motif cherché ?

La formule que j'écrirais est plutôt de la forme :
sed -e 's/^\(...\).*$/\1/' input_file


Les 3 premiers '.' (n'importe quel caractère) peuvent être remplacés chacun par un [A-Z] si besoin (n'importe quelle lettre de A à Z). Le dernier '.' suivi de '*' correspondent à n'importe quelle suite de caractères jusqu'à la fin. Les parenthèses sont là pour grouper les 3 premiers caractères. On les réécrit avec le \1.

Testé approuvé ;-)

Yannick.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Répondre à