Scripting shell (plusieurs lines sur une seule)

Résolu/Fermé
Utilisateur anonyme - 24 mai 2019 à 15:49
lEprofSonDkon Messages postés 211 Date d'inscription jeudi 13 décembre 2018 Statut Membre Dernière intervention 8 octobre 2022 - 24 mai 2019 à 20:31
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
A voir également:

4 réponses

lEprofSonDkon Messages postés 211 Date d'inscription jeudi 13 décembre 2018 Statut Membre Dernière intervention 8 octobre 2022 13
24 mai 2019 à 19:49
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
Utilisateur anonyme
24 mai 2019 à 19:57
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
lEprofSonDkon Messages postés 211 Date d'inscription jeudi 13 décembre 2018 Statut Membre Dernière intervention 8 octobre 2022 13
24 mai 2019 à 20:08
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
Utilisateur anonyme
24 mai 2019 à 20:10
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
lEprofSonDkon Messages postés 211 Date d'inscription jeudi 13 décembre 2018 Statut Membre Dernière intervention 8 octobre 2022 13
24 mai 2019 à 20:17
simplement, si
oneLine
existe, n'ajoute pas
$1" "
!
0
Utilisateur anonyme
Modifié le 24 mai 2019 à 20:18
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
lEprofSonDkon Messages postés 211 Date d'inscription jeudi 13 décembre 2018 Statut Membre Dernière intervention 8 octobre 2022 13
24 mai 2019 à 20:31
tu passes le sujet en résolu ?
0