[Shell Unix] supprimer début d'un fichie

Fermé
Philippe - 13 avril 2007 à 00:12
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 13 avril 2007 à 14:42
Bonjours tout le monde,

Je dispose de plusieurs fichiers texte, j'aimerais pouvoir supprimer la partie du fichier du début jusqu'à un caractère unique mais dont la position varie d'un fichier à l'autre.

ex :

'Je m'appelle philippe @ j'ai 25 ans et j'habite Grenoble (...) '

Ici je voudrais supprimer toute la partie avant '@' et garder le reste en envoyant le résultat dans un nouveau fichier.

Voilà, j'espère avoir été assez clair.

PS : la boucle pour lire tout les fichiers ne me pose pas de problème mais c'est vraiment ce problème de suppression que me gêne, je suppose qu'une combinaison de 'awk' et 'cut' est la solution mais je débute et ne comprend pas toutes les ficelles du awk.

Merçi d'avance.
A voir également:

4 réponses

yoann_tux Messages postés 437 Date d'inscription lundi 28 février 2005 Statut Membre Dernière intervention 24 juillet 2008 95
13 avril 2007 à 00:33
on peu le faire en C ? :s
c'est ptete plus simple ^^
en gros tu fait
ouvrir fichier
lecture caractère par caractère...
et dès que tu le trouves
tu écris tous les caractères restant dans ton nouveau fichier
tu fermes les 2 fichiers
et vala :)
0
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
13 avril 2007 à 01:06
Bonjour

$ cut -d "@" -f2 fichier >fichier_sortie

Edit : j'ai cru qu'il y en avait un par ligne donc ce n'est pas bon désolé.
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
13 avril 2007 à 08:45
Salut,
sed -r 's/.*(@.*)/\1/' < fichier > fichier.out
;-)
0
Super merçi de vos réponse ! Seulement y'a un petit problème...Les fichiers que je traite sont organisé en colonnes, le cut enleve donc toutes les colonnes avant le caractère rentré en paramètres et non pas tout ce qu'il y a avant c'est-à-dire ce qu'il y a au dessus.

Voilà, je vais essayer avec un awk cela me semble plus logique.

Merçi.
0
C'est bon j'ai trouvé une solution avec 'awk' :

awk '/Sta/,/^$/' $FILE > tmp1

qui elimine toutes les lignes avant la chaîne de caractères 'Sta' en conservant celles qui suivent.
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
13 avril 2007 à 14:42
C'est ton exemple qui nous a induit en erreur ;-)

Sinon, avec "sed" ça donne :
sed  '/Sta/,$!d'
ou
sed -n '/Sta/,$p'
Au choix ;-))
0