Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 06/09/2010, à 17:43

Elemmire

script pour conf PostgreSQL sans commentaires

Etant en train de faire des dossiers d'exploitation de mes serveurs, je voulais y inclure les options de configuration de PostgreSQL (fichier postgresql.conf)
Ce fichier possède de nombreux commentaires dont je n'ai pas besoin dans mon document.
J'ai mis un peu de temps avant de trouver comment faire pour enlever tous les commentaires mais voici ma solution :

cat postgresql.conf | cut -d# -f1 |  grep -v $'^\t' |sed '/ ^\n/d; /^ *$/d'

ça peut toujours servir à d'autres ...

Hors ligne

#2 Le 06/09/2010, à 18:27

sputnick

Re : script pour conf PostgreSQL sans commentaires

Ah, un compétiteur pour les useless * awards !
http://partmaps.org/era/unix/award.html
J'en pleure.gif presque hmm

awk '!/^#/ && !/^$/{print}' postgresql.conf


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#3 Le 06/09/2010, à 23:16

Elemmire

Re : script pour conf PostgreSQL sans commentaires

le problème avec le fichier de conf de PostgreSQL c'est qu'il y a des commentaires en fin de ligne et d'autres précédées par de nombreuses tabulations :

# - Connection Settings -

listen_addresses = '*'		# what IP address(es) to listen on;
					# comma-separated list of addresses;
					# defaults to 'localhost', '*' = all
					# (change requires restart)
port = 5432				# (change requires restart)
max_connections = 100			# (change requires restart)
# Note:  Increasing max_connections costs ~400 bytes of shared memory per 
# connection slot, plus lock space (see max_locks_per_transaction).

j'avoue certe que l'on peut se passer de la commande cat mais ta solution ne donne cependant pas le résultat attendu ... merci quand meme pour ta participation au débat wink
Si tu preferes sans le cat ... on obtient alors :

cut -d# -f1 postgresql.conf |  grep -v $'^\t' |sed '/ ^\n/d; /^ *$/d'

mais j'avoue ne pas etre un expert de la commande awk qui doit certainement permettre de faire la meme chose

Dernière modification par Elemmire (Le 06/09/2010, à 23:18)

Hors ligne

#4 Le 06/09/2010, à 23:48

sputnick

Re : script pour conf PostgreSQL sans commentaires

awk -F# '!/^( *|\t*)?#/ && !/^$/{print $1}' postgresql.conf

C'est pas vraiment que je préfère, mais c'est juste plus propre et on economise un processus ( je voit d'ici les gens qui disent que c'est pas beaucoup de ressources et que je pinaille, mais c'est avec les petits ruisseaux qu'on fait les grandes rivières... ). Un garagiste démonte pas ses pneus avec une baramine que je sache big_smile


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#5 Le 07/09/2010, à 09:23

Elemmire

Re : script pour conf PostgreSQL sans commentaires

ton argument est tout à fait bon ... on remarquera au passage que si l'on utilise la commande time on obtient les résultat suivants :
pour awk :

real	0m0.004s
user	0m0.000s
sys	0m0.000s

pour cut + grep + sed :

real	0m0.003s
user	0m0.010s
sys	0m0.020s

il est certain que si ce genre de script est lancé toutes les secondes cela peut avoir de l'importance au niveau des ressources ... mais ce n'est pas mon cas alors il est vrai qu'on se laisse aller un peu à la facilité ! big_smile
En tout cas merci à toi d'apporter une autre vision des choses.

Dernière modification par Elemmire (Le 07/09/2010, à 09:24)

Hors ligne

#6 Le 07/09/2010, à 12:08

sputnick

Re : script pour conf PostgreSQL sans commentaires

Je n'obtient pas les mêmes résultats que toi, awk est plus rapide.

Sur un "Intel(R) Core(TM)2 Quad CPU    Q9650  @ 3.00GHz" (on peut appeler ça un processeur veloce)

$ time awk -F# '!/^( *|\t*)?#/ && !/^$/{print $1}' /tmp/l 1>/dev/null

real    0m0.004s
user    0m0.003s
sys     0m0.000s
$ time cut -d# -f1 /tmp/l |  grep -v $'^\t' |sed '/ ^\n/d; /^ *$/d'  1>/dev/null

real    0m0.005s
user    0m0.003s
sys     0m0.007s

Sur un petit "ARMv7 Processor rev 2 (v7l)" d'un Android nessus one ou c'est bien plus flagrant :

$ time awk -F# '!/^( *|\t*)?#/ && !/^$/{print $1}' test* 1>/dev/null
real    0m 0.08s
user    0m 0.07s
sys     0m 0.01s
$ time cut -d# -f1 test* |  grep -v $'^\t' |sed '/ ^\n/d; /^ *$/d'  1>/dev/null
real    0m 0.17s
user    0m 0.11s
sys     0m 0.00s

Dernière modification par sputnick (Le 07/09/2010, à 12:10)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#7 Le 07/09/2010, à 18:19

Elemmire

Re : script pour conf PostgreSQL sans commentaires

j'ai du faire le test avec awk d'abord qui as du prendre le temps de charger le fichier en mémoire ... chose que n'a pas eu besoin de faire la commande cut + grep + sed !

Hors ligne