Scripting shell (plusieurs lines sur une seule)

Résolu
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. 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.
    1. 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.
      1. 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
    2. 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
      1. simplement, si
        oneLine
        existe, n'ajoute pas
        $1" "
        !
    3. 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
      1. tu passes le sujet en résolu ?