Scripting shell (plusieurs lines sur une seule)

Résolu
Utilisateur anonyme -  
lEprofSonDkon Messages postés 227 Statut Membre -
Bonjour,

j'ai plusieurs lines de 127.0.0.1

root@server:~# grep -e 127.0.0.1 /etc/hosts |grep -v "#" |grep -v "0.0.0" | awk '{print $1,$2}'
127.0.0.1 localhost
127.0.0.1 localhost.localdomain
127.0.0.1 local
127.0.0.1 localhost

je voudrais que ca devienne avec une commande :
127.0.0.1 localhost localhost.localdomain local localhost

des volontaires pour m'aider?

Configuration: Windows / Firefox 60.0

4 réponses

  1. lEprofSonDkon Messages postés 227 Statut Membre 13
     
    non, on ne pipe pas plusieurs fois
    grep
    pour finalement utiliser
    awk
    !
    on utilise tout de suite
    awk
    .
    c'est un langage de script à part entière.

    et, pour t'apporter une réponse cohérente, il nous faut le fichier d'origine à traiter.
    0
  2. Utilisateur anonyme
     
    Voici une partie du fichier que je souhaite traiter.

    root@server:~# grep "127.0.0.1" /etc/hosts
    # There is a version of this file that uses 127.0.0.1 instead of 0.0.0.0
    127.0.0.1 localhost
    127.0.0.1 localhost.localdomain
    127.0.0.1 local
    0.0.0.0 ms127.0.0.101341.club
    # This *must* be the first line: 127.0.0.1 localhost #
    127.0.0.1 localhost
    root@gern:~#

    le fichier est trop volumineux pour etre coller ici :
    root@server:~# du -sh /etc/hosts
    896K /etc/hosts
    root@server:~# wc -l /etc/hosts
    30716 /etc/hosts
    root@server:~#

    j'use grep et awk simplement car je ne sais pas utiliser awk pour autre chose que sa fonction print.
    0
    1. lEprofSonDkon Messages postés 227 Statut Membre 13
       
      il ne te reste qu'à apprendre. :)

      awk '/127\.0\.0\.1/ && !/#/ && !/0\.0\.0/{oneLine=oneLine?oneLine" "$1" "$2:$1" "$2}END{print oneLine}' /etc/hosts
      0
  3. Utilisateur anonyme
     
    merci mais malheureusement ce n'est pas le résultat attendu.
    root@server:~# awk '/127\.0\.0\.1/ && !/#/ && !/0\.0\.0/{oneLine=oneLine?oneLine" "$1" "$2:$1" "$2}END{print oneLine}' /etc/hosts

    127.0.0.1 localhost 127.0.0.1 localhost.localdomain 127.0.0.1 local 127.0.0.1 localhost

    instead of

    127.0.0.1 localhost localhost.localdomain local localhost
    0
    1. lEprofSonDkon Messages postés 227 Statut Membre 13
       
      simplement, si
      oneLine
      existe, n'ajoute pas
      $1" "
      !
      0
  4. Utilisateur anonyme
     
    merci je dormirais moins... plus intelligent ce soir :)
    root@server:~# awk '/127\.0\.0\.1/ && !/#/ && !/0\.0\.0/{oneLine=oneLine?oneLine" "$2:$1" "$2}END{print oneLine}' /etc/hosts
    127.0.0.1 localhost localhost.localdomain local localhost

    thx
    0
    1. lEprofSonDkon Messages postés 227 Statut Membre 13
       
      tu passes le sujet en résolu ?
      0