[AWK][Linux] : Supprimer les doublons de votre PATH… RS FS et ORS OFS

Un truc typique sur linux c’est d’ajouter des chemins à votre PATH pour accéder à des binaires mais sans vérifier que ce chemin existe déjà. Du coup on perd un peu en perf et c’est très moche.

Je ne vous propose pas de commande pour vérifier si un chemin existe déjà mais plutôt une commande qui vous permettra de recréer votre variable $PATH sans les doublons. Ainsi vous pouvez ajouter cela au moment du chargement de vos variables d’environnement.

export PATH=`echo -n $PATH | awk -v RS=":" '{ if (!x[$0]++){printf s $0 ; s=":"}}'`

L’option RS de awk s’appelle record separator. Il permet de définir les séparateur de ligne.

L’autre option souvent utilisée avec awk c’est FS pour fiels separator. On défini alors les séparateur de champs comme par exemple le « ; » pour les fichiers de type csv.

gaming cards on hands
Photo by Midhun Joy on Pexels.com

Ensuite pour aller un petit peu plus loin on peut aussi utiliser les output de ces options à savoir OFS ou ORS. Ainsi c’est l’inverse on définit comment on souhaite afficher les spérateur de champs ou de ligne.

Par exemple :

awk -F':' 'BEGIN{OFS=">";} {print $3,$4;}' /etc/passwd
1001>1001
1002>1002
1003>1003

En gros on parcours le passwd en définissant les champs par un FS valant « : ». Puis pour la sortie du résultat on redéfinie un séparateur de champ avec un OFS valant « > ».

Il y a aussi dans les options courantes pour les oneliner :

  • NR (number rows) : affiche le nombre de ligne
  • NF (number fields) : nombre de champs

Ainsi on pourrait afficher le nombre de ligne dont le nombre de champs vaut une certaine valeur.

AWK est un vrai couteau suisse pour qui sait l’utiliser.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s