Scripting shell (plusieurs lines sur une seule)

[Résolu/Fermé]
Signaler
Messages postés
41
Date d'inscription
jeudi 11 juin 2015
Statut
Membre
Dernière intervention
14 mai 2021
-
Messages postés
209
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
27 septembre 2019
-
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

Messages postés
209
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
27 septembre 2019
14
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.
Messages postés
41
Date d'inscription
jeudi 11 juin 2015
Statut
Membre
Dernière intervention
14 mai 2021
2
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.
Messages postés
209
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
27 septembre 2019
14
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
Messages postés
41
Date d'inscription
jeudi 11 juin 2015
Statut
Membre
Dernière intervention
14 mai 2021
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
Messages postés
209
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
27 septembre 2019
14
simplement, si
oneLine
existe, n'ajoute pas
$1" "
!
Messages postés
41
Date d'inscription
jeudi 11 juin 2015
Statut
Membre
Dernière intervention
14 mai 2021
2
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
Messages postés
209
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
27 septembre 2019
14
tu passes le sujet en résolu ?