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

Shell et commandes POSIX Discussion :

Commande sed tabulation et retour chariot


Sujet :

Shell et commandes POSIX

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 59
    Points : 61
    Points
    61
    Par défaut Commande sed tabulation et retour chariot
    Bonjour,

    Je souhaite insérer des chaines en faisant des tabulations et des retours chariots dans mon fichier. Pour ce faire, j'ai un fichier texte, dans lequel je cherche une chaine de caractère, si je trouve la chaine de caractère, je récupère le numéro de ligne.
    Sur cette ligne trouvée, j'insert une autre chaine de caractère en faisant une tabulation et un retour chariot. Du coup, le contenu précédant sera à la ligne +1.

    Je cherche la chaine "motif", une fois la chaine trouvée, je récupère le numéro de ligne. sur la ligne contenant le motif cherché, j'écris le motif2 en tabulant en en faisant un retour chariot. Et le "motif" initiale sera sur la ligne suivante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var1=$(grep -n 'motif"' test.txt |cut -f1 -d:)
    sed ''${var1}'s/^/\t\tMotif2 \n/' test.txt > result.txt
    Mon code marche très bien sur redhat, par contre il ne marche pas sur aix. merci de votre aide.


    contenu fichier test.txt :

    bonbon
    noel noel
    nouvel an
    Paris
    New York charcuterie
    motif
    fromage
    charcuterie

  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    utilises append.... ou insert comme fonction native de sed
    se sera plus simple

    par exemple ça ira mieux qu'une longue explication changer motif en motif2 + tabulation + append de ICI à la suite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    francois@baal:~$ cat > toto
    bonbon
    noel noel
    nouvel an
    Paris
    New York charcuterie
    motif
    fromage
    charcuterie 
    francois@baal:~$ sed 's/motif/\tmotif2/ ; /motif2/ a\
    ICI 
    ' toto > titi
    francois@baal:~$ cat titi
    bonbon
    noel noel
    nouvel an
    Paris
    New York charcuterie
            motif2
    ICI 
    fromage
    charcuterie 
    francois@baal:~$ rm t[io]t[io]        
    francois@baal:~$

  3. #3
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour

    As-tu comparé les numéros de version de sed ?
    Tu as 2 lignes de commandes. Laquelle des deux ne fait pas son boulot ?
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  4. #4
    Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 59
    Points : 61
    Points
    61
    Par défaut
    Bonjour,

    Mon script marche bien sous Linux et non sur AIX.
    La deuxième ligne qui déconne sur AIX. Il ne fait pas la tabulation ni le retour à la ligne.

  5. #5
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 280
    Points : 12 729
    Points
    12 729
    Par défaut
    Bonjour,

    Et non, beaucoup de version de sed ne supporte pas la syntaxe "\t,\n,\r,...", donc il faut écrire réellement ces caractères et dans ce cas ctrl-v est ton ami sauf pour "\n".

    Par exemple pour la tabulation, tu appuis sur la touche ctrl (celle de gauche) et en la gardant appuyée, tu appuies sur la touche v (rien ne se passe jusqu'ici, c'est normal), tu relache tout puis tu appuie juste sur la touche tabulation, et là sur ton terminal, tu devrait voir apparaitre "^I", et donc le caractère est saisie et donc en sed, un exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/pattern/^Imodification/g'
    Pour le '\n', il suffit juste que tu le saisisses normalement, mais dans une chaine quoté, ce qui par exemple donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sed 's/pattern/modification
    suite_modification/g'
    Cordialement.

Discussions similaires

  1. [RegExp] Gestion des tabulations, espaces et retours chariots
    Par Mengué georges dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 11/11/2010, 23h20
  2. [SimpleXML] retour chariot et tabulation addchild
    Par bastian06n dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 27/10/2010, 11h29
  3. commande sed : code retour
    Par sam01 dans le forum Administration système
    Réponses: 5
    Dernier message: 06/08/2008, 13h37
  4. Insertion de retour chariots avec sed
    Par zoullou dans le forum Shell et commandes GNU
    Réponses: 17
    Dernier message: 21/12/2007, 22h06

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