IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

modification de fichier texte en shell


Sujet :

Linux

  1. #21
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 243
    Points : 120
    Points
    120
    Par défaut
    Bonjour,

    Je reviens...

    Je souhaite désormais supprimer toute les lignes sauf celles commencant par certains mots.
    J'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed "/^mot/!d" $file > 1$file
    cependant dés lors que je souhaite spécifier plusieurs mots, ca ne passe pas. J'ai essayé avec des crochets et des caractères de ponctuation mais...
    Dans un tube, le résultat est erroné.

    Merci d'avance pour votre aide.

  2. #22
    Membre éclairé Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Points : 652
    Points
    652
    Par défaut
    Citation Envoyé par jonathan1
    Bonjour,

    Je reviens...

    Je souhaite désormais supprimer toute les lignes sauf celles commencant par certains mots.

    egrep -v "^(mot1|mot2|mot3)" infile > outfile

    http://man.developpez.com/man1/egrep.1.php

  3. #23
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 243
    Points : 120
    Points
    120
    Par défaut
    Merci beaucoup,

    C'est sans l'option '-v' pour ce que je voulais.



    Tu ne seras bientôt plus un padawan à cette alure

  4. #24
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 243
    Points : 120
    Points
    120
    Par défaut
    Merci beaucoup,

    J'ai obtenu tout ce dont j'avais besoin.

    sed/awk/grep/cut/tr

    Ces commandes m'ont permis de faire a peu prés ce que je voulais.

    Merci encore

  5. #25
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 243
    Points : 120
    Points
    120
    Par défaut
    Bonjour,

    Une dernière ch'tite question,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for file in *.txt ;
    do
    ...
    done
    Ca me permet d'executer mon script sur tous les fichiers du dossier.
    Est-ce qu'il y a moyen qu'il le fasse aussi dans des sous dossiers, ca m'arrangerait...

    Merci d'avance

  6. #26
    Membre éclairé Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Points : 652
    Points
    652
    Par défaut
    Citation Envoyé par jonathan1
    Est-ce qu'il y a moyen qu'il le fasse aussi dans des sous dossiers, ca m'arrangerait...
    Merci d'avance

    Te permets de parcourir le répertoire courant "." et tous les sous-répertoires en sélectionnant les fichiers *.txt

    http://pwet.fr/man/linux/commandes/find

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    find . -name '*.txt' -type f | while read File 
    do
    	echo $File
    done

  7. #27
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 243
    Points : 120
    Points
    120
    Par défaut
    Merci BlaireauOne,

    Y a aussi tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for file in */*; #pour un niveau de plus dans l'arborescence
    do
    ...
    done
    Implique de connaitre le nombre de niveaux à parcourir


  8. #28
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 243
    Points : 120
    Points
    120
    Par défaut
    finalement, j'ai encore un problème.

    Je souhaite renommer les fichiers produits par mon script. J'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tr -d [chaine]#je veux supprimer la chaine EXACT
    Mais il me supprime toute les occurences de chaque caractère de "chaine".

    j'ai essayé des combinaisons entre simple et doubles côtes, crochets, et d'autres mais sans résultat.

    La commande "tr" sait-elle faire ca ?

    MERCI

  9. #29
    Membre éclairé Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Points : 652
    Points
    652
    Par défaut
    Citation Envoyé par jonathan1
    Je souhaite renommer les fichiers produits par mon script. La commande "tr" sait-elle faire ca ?

    Comme tu le verras ci-dessous, "tr" fonctionne au niveau du caractère :

    http://man.developpez.com/man1/tr.1.php


    Pour ton cas, sed est approprié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for file in *.txt 
    do
        NewName=`echo $file | sed 's/chaine//'`
        echo "* mv $file $NewName"
        # mv $file $NewName              # "decommenter" si OK
    done

  10. #30
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 243
    Points : 120
    Points
    120
    Par défaut
    Bonjour,

    Ca faisait longtemps...
    (Quand on a utilisé le shell une fois, on lui trouve toujours une utilité.)
    Je souhaite savoir s'il est possible d'utiliser 'awk' pour récupérer des champs mais en partant de la fin de la chaine de caractère.
    J'ai vu qu'on pouvait récupérer le dernier champs ($NF) mais c'est pas simple pour récupérer les X derniers.

    Merci d'avance.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Débutant] modif de fichier texte => ordonnancements
    Par membreComplexe12 dans le forum MATLAB
    Réponses: 11
    Dernier message: 22/02/2010, 21h59
  2. Création modification de fichiers texte
    Par thierrybatlle dans le forum WinDev
    Réponses: 4
    Dernier message: 04/04/2007, 15h37
  3. modification de fichier texte en batch
    Par ob1knob dans le forum Windows
    Réponses: 15
    Dernier message: 03/10/2006, 17h10
  4. Modification de fichier texte
    Par jiloup dans le forum C++
    Réponses: 3
    Dernier message: 28/12/2005, 19h28
  5. Modification de fichiers texte
    Par ratbiker dans le forum Langage
    Réponses: 3
    Dernier message: 21/11/2005, 20h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo