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 GNU Discussion :

Copier un certain nombre de lignes d'un fichier vers un autre fichier


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 13
    Par défaut Copier un certain nombre de lignes d'un fichier vers un autre fichier
    Bonjour,

    Dans mon script shell (#!/bin/sh), je voudrais recopier les lignes numéro 3 à numéro 20 du script shell lui même qui est exécuté dans les lignes 3 à 20 d'un autre fichier.
    Je pensais faire ça avec la commande sed.
    Par exemple, je sais que la commande :
    sed -i "3,20 c\toto" file permet d'écrire la chaîne toto dans le fichier file sur les lignes 3 à 20.
    Mais après je bloque...

    Si quelqu'un a une idée...
    Merci d'avance

  2. #2
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Bonsoir,

    Voici ce que j'ai compris:

    • fichier source src_1.
    • fichier source src_2.
    • fichier destination dst = lignes 1 et 2 de src_1, puis lines 3 à 20 de src_2, puis lignes 3 à la fin de src_1.

    Si c'est bien cela, voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sed -n -e '1,2p' src_1 > dst
    sed -n -e '3,20p' src_2 >> dst
    sed -n -e '3,$p' src_1 >> dst

  3. #3
    Membre chevronné Avatar de rberthou
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 612
    Par défaut
    Je ne suis pas certain d'avoir bien compris le problème mais si c est uniquement recopier les lignes 3 à 20 je dirais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    head -23 monfichiersource | tail -20   > monfichierdest
    head me donne les 23 premières lignes et tail se limite au 20 dernières de la sélection précédente (donc normalement les lignes 3 à 20).

  4. #4
    Membre Expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Par défaut
    Bonjour,
    Citation Envoyé par rberthou Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    head -23 monfichiersource | tail -20   > monfichierdest
    head me donne les 23 premières lignes et tail se limite au 20 dernières de la sélection précédente (donc normalement les lignes 3 à 20).
    Hum, ce ne serait pas plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    head -20 monfichiersource | tail -18   > monfichierdest
    ?

  5. #5
    Membre chevronné Avatar de rberthou
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 612
    Par défaut
    Citation Envoyé par pitipoisson Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    head -20 monfichiersource | tail -18   > monfichierdest
    ?
    Oui apres avoir vérifié le message original (ce sont les lignes 3 à 20 et non pas 20 lignes à partir de la 3eme)

  6. #6
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Je ne suis pas sûr que la dernière partie soit correcte: Le fait de faire > monfichierdest crée simplement un nouveau fichier (ou supprime son contenu initial). Or il est demandé "... dans les lignes 3 à 20 d'un autre fichier", donc j'imagine que cet autre fichier existe déjà et a plus de trois lignes, il faut donc insérer les lignes extraites dans un autre fichier.

Discussions similaires

  1. [WD-2010] Recopier certains paragraphes d'un fichier vers un autre fichier
    Par delphys dans le forum Word
    Réponses: 1
    Dernier message: 06/04/2013, 22h59
  2. Réponses: 1
    Dernier message: 29/12/2008, 11h12
  3. Réponses: 7
    Dernier message: 17/10/2007, 09h32
  4. Copier le contenu d'un fichier vers un autre fichier Excel
    Par mathias dans le forum VBA Access
    Réponses: 4
    Dernier message: 13/06/2007, 15h47
  5. Copier certaines lignes d'une table vers une autre
    Par TNorth dans le forum Requêtes
    Réponses: 8
    Dernier message: 25/07/2006, 15h31

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