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 :

Ajouter du texte après chaque lignes d'un fichier


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 61
    Par défaut Ajouter du texte après chaque lignes d'un fichier
    Bonjour à tous,

    J'ai le fichier METABAT.txt suivant :

    c_000000001
    c_000000002
    c_000000003
    c_000000004
    c_000000005
    c_000000006
    c_000000007

    et j'aimerai ajouter une tabulation après chaque lignes puis du texte (bin1) pour obtenir ceci :

    c_000000001 bin1
    c_000000002 bin1
    c_000000003 bin1
    c_000000004 bin1
    c_000000005 bin1
    c_000000006 bin1
    c_000000007 bin1

    Je suppose qu'il faut utiliser la commande sed, mais je ne vois pas comment l'utiliser...

    Pouvez vous m'aider ?

    Merci à vous

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 418
    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 418
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     awk '$0=$0"\t bin1"' METABIDULE.txt

  3. #3
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    Citation Envoyé par Amniote Voir le message
    (...) utiliser la commande sed
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e 's/.*/&\tbin1/' METAMACHIN.txt

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 300
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/$/\tbin1/' METATRUC.txt

  5. #5
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    (...)
    je me doutais qu'il devait y avoir plus concis

    manque plus que N_BaH avec la méthode bash et on a fait le tour

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 730
    Par défaut
    voilà, voilà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ f(){ test -n "$2" && printf '%s\tbin\n' "$2" || echo;}
    $ :|mapfile -t -c1 -C 'f' <fichier
    on remercie disedorgue !

  7. #7
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 418
    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 418
    Par défaut
    Pas besoin de créer une fonction, printf existe déjà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    :|mapfile -t -c1 -C 'printf "%s\tbin" <<<' <fichier

  8. #8
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 730
    Par défaut
    et le test ? si une ligne est vide, est-ce qu'on ajoute quand même \tbin ?

  9. #9
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 418
    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 418
    Par défaut
    Bah, c'est pas précisé, et les solutions awk et sed ne traitent pas le cas.

    d'ailleurs, si son fichier ne contient qu'un mot par ligne, on peut passer uniquement par un printf...

  10. #10
    Membre émérite Avatar de balkany
    Homme Profil pro
    Touriste
    Inscrit en
    Juillet 2017
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Touriste

    Informations forums :
    Inscription : Juillet 2017
    Messages : 348
    Par défaut
    Autre possibilité (histoire d'en remettre une petite couche ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xargs -afichier -d'\n' printf '%s\tbin\n'
    Mais si on est sûr qu'il n'y a qu'un mot par ligne, comme dit disedorgue ci-dessus, il suffit de faire (en pur bash) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf '%s\tbin\n' $(<fichier)

  11. #11
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 61
    Par défaut
    Merci à tous pour vos retours ! Ça m'aide énormément, je n'y connais pas grand chose en lignes de commandes...

    Pour répondre aux interrogations, je confirme qu'il n'y a bien qu'un seul mot par lignes, et il n'y a pas de lignes vides !

    D'ailleurs je me pose une autre question, j'aimerai ajouter du texte afin de passer de ceci (c'est une tabulation qui sépare C_000000001 et bin1) :

    C_000000001 bin1
    C_000000002 bin1
    C_000000003 bin1
    C_000000004 bin1
    C_000000005 bin1
    C_000000006 bin1
    C_000000007 bin1
    C_000000008 bin1

    A ceci :

    C_000000001_split_00001 bin1
    C_000000002_split_00001 bin1
    C_000000003_split_00001 bin1
    C_000000004_split_00001 bin1
    C_000000005_split_00001 bin1
    C_000000006_split_00001 bin1
    C_000000007_split_00001 bin1
    C_000000008_split_00001 bin1

    Merci encore !

  12. #12
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 730
    Par défaut
    tu fais cette dernière modification avant la précédente !

    EDIT: mais pourquoi "morceler" ?

  13. #13
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Le fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ cat f3
    C_000000001	bin1
    C_000000002	bin1
    C_000000003	bin1
    C_000000004	bin1
    C_000000005	bin1
    C_000000006	bin1
    C_000000007	bin1
    C_000000008	bin1
    Le même avec la visibilité des caractères non-imprimable, comme la tabulation, représentée ici par ^I
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ cat -A f3
    C_000000001^Ibin1$
    C_000000002^Ibin1$
    C_000000003^Ibin1$
    C_000000004^Ibin1$
    C_000000005^Ibin1$
    C_000000006^Ibin1$
    C_000000007^Ibin1$
    C_000000008^Ibin1$
    La syntaxe sed :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ sed 's/\t/_split_00001&/' f3
    C_000000001_split_00001	bin1
    C_000000002_split_00001	bin1
    C_000000003_split_00001	bin1
    C_000000004_split_00001	bin1
    C_000000005_split_00001	bin1
    C_000000006_split_00001	bin1
    C_000000007_split_00001	bin1
    C_000000008_split_00001	bin1
    La même passée à cat -A pour voir les tabulations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ sed 's/\t/_split_00001&/' f3 | cat -A
    C_000000001_split_00001^Ibin1$
    C_000000002_split_00001^Ibin1$
    C_000000003_split_00001^Ibin1$
    C_000000004_split_00001^Ibin1$
    C_000000005_split_00001^Ibin1$
    C_000000006_split_00001^Ibin1$
    C_000000007_split_00001^Ibin1$
    C_000000008_split_00001^Ibin1$

Discussions similaires

  1. Ajouter un "tag" à chaque ligne d'un fichier texte
    Par jjacques68 dans le forum WinDev
    Réponses: 18
    Dernier message: 04/07/2018, 01h45
  2. Réponses: 2
    Dernier message: 11/12/2010, 00h41
  3. [Bash] Insertion texte sous chaque ligne
    Par eZula dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 16/12/2007, 19h44
  4. Modifer un fichier en ajoutant le numéro de chaque ligne
    Par bellout dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 15/06/2006, 14h43
  5. [BATCH] lire chaque ligne d'un fichier texte
    Par bartmarley dans le forum Windows
    Réponses: 13
    Dernier message: 22/04/2005, 22h01

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