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 avril 2019 à 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 . Évalué à 2. Dernière modification le 15 avril 2019 à 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 à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.