Forum Programmation.shell Ajouter le contenu d'un fichier dans un autre par ordre et numéro

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
-6
14
avr.
2019

Bonjour

je veux ajouter le contenu d'un fichier dans un autre voilà le contenu de mes fichiers par titre d'exemple :

monfichier1=

            1   Germany
            2   Indonesia
            3   United Kingdom
            4   Malaysia

monfichier2=

    Ping: 15 ms
    Ping: 29 ms
    Ping: 31 ms
    Ping: 29 ms

mon but c'est d'avoir un autre fichier 3 comme ça :

        1  Germany           Ping: 15 ms
        2  Indonesia         Ping: 29 ms
        3  United Kingdom    Ping: 31 ms
        4  Malaysia          Ping: 29 ms

et merci d'avance…

  • # sed ou awk

    Posté par  . Évalué à 3.

    Tout est dans le titre.

    Choisis ton outil et écris ton algorithme. Bon courage.

    • [^] # ou paste?

      Posté par  . Évalué à 7.

      Quoique l'exemple qu'il donne, c'est exactement le cas d'utilisation de paste.

  • # autre solution

    Posté par  . Évalué à 2.

    generer le fichier 3 à partir du 1 et seulement du 1

    car j'imagine que tu as d'abord une liste de "serveurs' pour generer le 1
    puis tu les pings pour avoir 2

    si c'est le cas, dans ton code, lors du ping, tu fais

    [...]
    echo "$nomserveur ; $resultatping" >>fichier3
    [...]
    • [^] # Re: autre solution

      Posté par  . Évalué à -4. Dernière modification le 14/04/19 à 12:11.

      c'est un script juste pour information le code source et extrait les informations

      cette commande ne fonctionne pas
      echo "$nomserveur ; $resultatping" >>fichier3

      mon script:

              ##!/bin/sh
              cd /tmp
              FreeServertmpa=/tmp/freeservra*
              FreeServertmpb=/tmp/freeservrb*
              #HOST 
              HTTPSERV73="https://www.vpngate.net/en/"
              #TMP FILES
              FreeServertmpb73=/tmp/freeservrb73
              FreeServertmpb74=/tmp/freeservrb74
              FreeServertmpb75=/tmp/freeservrb75
              FreeServertmpb76=/tmp/freeservrb76
              #TMP FILES
              FreeServertmpa73=/tmp/freeservra73
              FreeServertmpa74=/tmp/freeservra74
              FreeServertmpa75=/tmp/freeservra75
              FreeServertmpa76=/tmp/freeservra76
              wget -O $FreeServertmpa73 $HTTPSERV73 > /dev/null 2>&1
              sed -ne '/tcp/p' $FreeServertmpa73 > $FreeServertmpb73
      
              sed -ne 's#.*width='32' height='32' /><br>\(.*\).*#\1#p' $FreeServertmpb73 > $FreeServertmpb74
              sed -n '/><br>/{s@.*/><br>\([^$<]*\)</td><td.*@\1@p}' $FreeServertmpb73 > $FreeServertmpb74
              sed -ne 's#.*</span></b><BR>\([^<.*].*\)</b><BR><BR><b>.*#\1#p' $FreeServertmpb73 > $FreeServertmpb76
              sed -i 's|<b>||' $FreeServertmpb76
              nl -ba $FreeServertmpb74 > $FreeServertmpb75
      
              echo "$(<freeservrb75)$(<freeservra76)"\n
              echo "$(<freeservrb75) ; $(<freeservra76)" >> $FreeServertmpa76
              rm -f $FreeServertmpa > /dev/null 2>&1
              rm -f $FreeServertmpb > /dev/null 2>&1
              rm -f $FreeServertmpa* $FreeServertmpb* 
              sleep 2;
              exit 0
      • [^] # Re: autre solution

        Posté par  . Évalué à 3.

        mais pourquoi donc toutes ces ouvertures de fichier temporaire pour stocker le resultat d'un sed
        alors que tu peux le stocker en variable pour l'utiliser ensuite

        VARIABLEA=$(sed -e 's#motifA#\1#' -e 's#motifB#\1#' fichier_source.txt)
        
        echo ${VARIABLEA}

        de plus ici :

        sed -ne 's#.*width='32' height='32' /><br>\(.*\).*#\1#p' $FreeServertmpb73 > $FreeServertmpb74
        sed -n '/><br>/{s@.*/><br>\([^$<]*\)</td><td.*@\1@p}' $FreeServertmpb73 > $FreeServertmpb74

        ton premier sed est tout de suite ecraser par le second (tu ecris dans le meme fichier tmpb74)

  • # Just do it !

    Posté par  . Évalué à 5.

    Souvent, mino60 veut des choses…
    Semble t'il sans vouloir se donner la peine de s'y mettre lui-même…
    Mais après tout, pourquoi faire quand il suffit d'exiger ?

    Ça me rappelle une comptine de chez moi: "D'r Hans ém Schnogaloch" ;-D

  • # read -u ?

    Posté par  (site Web personnel) . Évalué à 2. Dernière modification le 15/04/19 à 08:40.

    while read -u 3 a && read -u 4 b; do echo $a $b >>monfichier3 ; done 3<monfichier1 4<monfichier2

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.