<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Archives des AWK - Xavki</title>
	<atom:link href="https://xavki.blog/category/awk/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>Open your Sources..</description>
	<lastBuildDate>Thu, 02 Jun 2022 19:34:00 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Comment créer des namespaces et des déployments kubernetes avec un fichier texte ??</title>
		<link>https://xavki.blog/comment-creer-des-namespaces-et-des-deployments-kubernetes-avec-un-fichier-texte/</link>
		
		<dc:creator><![CDATA[xavki]]></dc:creator>
		<pubDate>Thu, 02 Jun 2022 18:57:37 +0000</pubDate>
				<category><![CDATA[AWK]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<guid isPermaLink="false">https://xavki.blog/?p=1465</guid>

					<description><![CDATA[<p>Les meilleurs amis du monde AWK et kubernetes poour vous proposer quelque chose d&#8217;ultra simple mais qui peut donner des idées pour de multiples autres oneliners. Dans cette vidéo, on découvre comment créer des namespaces et des déployements associés à... <a href="https://xavki.blog/comment-creer-des-namespaces-et-des-deployments-kubernetes-avec-un-fichier-texte/" class="suite"><i class="fal fa-long-arrow-right"></i></a></p>
<p>L’article <a href="https://xavki.blog/comment-creer-des-namespaces-et-des-deployments-kubernetes-avec-un-fichier-texte/">Comment créer des namespaces et des déployments kubernetes avec un fichier texte ??</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Les meilleurs amis du monde AWK et kubernetes poour vous proposer quelque chose d&#8217;ultra simple mais qui peut donner des idées pour de multiples autres oneliners.</p>



<p>Dans cette vidéo, on découvre comment créer des namespaces et des déployements associés à ceux-ci avec un simple oneline et un fichier textes déclaratif.</p>



<p><code>awk -F ";" '{print "Creating "$0"…";system("kubectl create ns "$1" 2&gt; /dev/null;kubectl create -n " $1 " deploy --image=nginx:latest "$2"")}' mydeployments.txt</code></p>



<p>Le truc cool c&#8217;est que l&#8217;on aurait même plus pousser jusqu&#8217;à ajouter deux colonnes pour l&#8217;image et son tag en utilisant $3 et $4.</p>



<p>Et c&#8217;est aussi la première vidéo tiktok en guise de test avec un peu de musique 😉</p>



<figure class="wp-block-embed is-type-video is-provider-tiktok wp-block-embed-tiktok"><div class="wp-block-embed__wrapper">
<blockquote class="tiktok-embed" cite="https://www.tiktok.com/@xavki/video/7104727818369502470" data-video-id="7104727818369502470" data-embed-from="oembed" style="max-width:605px; min-width:325px;"> <section> <a target="_blank" title="@xavki" href="https://www.tiktok.com/@xavki?refer=embed">@xavki</a> <p>New style &#8211; AWK &#038; Kubernetes</p> <a target="_blank" title="♬ son original - xavki" href="https://www.tiktok.com/music/son-original-7104727806190340869?refer=embed">♬ son original &#8211; xavki</a> </section> </blockquote> <script async src="https://www.tiktok.com/embed.js"></script>
</div></figure>
<p>L’article <a href="https://xavki.blog/comment-creer-des-namespaces-et-des-deployments-kubernetes-avec-un-fichier-texte/">Comment créer des namespaces et des déployments kubernetes avec un fichier texte ??</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>AWK et sa fonction system tellement pratique</title>
		<link>https://xavki.blog/awk-fonction-system-pratique/</link>
		
		<dc:creator><![CDATA[xavki]]></dc:creator>
		<pubDate>Tue, 30 Mar 2021 17:02:14 +0000</pubDate>
				<category><![CDATA[AWK]]></category>
		<guid isPermaLink="false">https://xavki.blog/?p=1212</guid>

					<description><![CDATA[<p>Hello les ami(e)s !!! J&#8217;espère que vous allez bien dans cette période difficile à l&#8217;approche d&#8217;un durcissement de confinement. Difficile de pouvoir reprendre une vie normale alors que nos hôpitaux se remplissent. Cependant il faut continuer à garder le moral... <a href="https://xavki.blog/awk-fonction-system-pratique/" class="suite"><i class="fal fa-long-arrow-right"></i></a></p>
<p>L’article <a href="https://xavki.blog/awk-fonction-system-pratique/">AWK et sa fonction system tellement pratique</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="has-drop-cap">Hello les ami(e)s !!! J&#8217;espère que vous allez bien dans cette période difficile à l&#8217;approche d&#8217;un durcissement de confinement. Difficile de pouvoir reprendre une vie normale alors que nos hôpitaux se remplissent.</p>



<p>Cependant il faut continuer à garder le moral et alles de l&#8217;avant. Certes le soleil nous donne un peu plus envie d&#8217;aller dehors mais il redonne tout de même une belle dose d&#8217;espérance.</p>



<p>Bref aujourd&#8217;hui <strong>parlons ou reparlons de awk</strong>. C&#8217;est souvent un outil méconnu ou tout du moins que l&#8217;on connaît pour faire des choses très simples et on se limite dans son utilisation grâce aux facilités apportées par la ligne de commandes (pipe etc).</p>



<h2 class="wp-block-heading">AWK la simplicité à l&#8217;état pur</h2>



<p>Je vous rappelle que j&#8217;avais fait il y a pas loin de 2 ans quelques tutos <strong>en guise de formation à awk</strong>. Ce petit cours de awk se limite à du petit oneline mais il permet déjà de faire des choses supers sympas je trouve :</p>



<ul class="wp-block-list"><li>élimination des doublons</li><li>compteurs</li><li>analyse de logs</li><li>conditions</li><li>génération de sql</li></ul>



<p>Vous pouvez retrouver tout cela dans <strong>la playlist dédiée au scripting saison 1</strong>.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Scripting S01 - AWK : découverte" width="625" height="352" src="https://www.youtube.com/embed/videoseries?list=PLn6POgpklwWoBKlx5N_sCugBDENm2RONi" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>Mais parfois avec <strong>un petit rien en plus et on peut faire vraiment beaucoup plus</strong>. Je ne vous parle pas là de créer un vrai script AWK, multiligne. Non on reste <strong>dans le oneline</strong> avec encore un gros degré de simplicité.</p>



<p>Alors pour la démo prenons la CLI kubectl pour manipuler les pods. Je pars de cette commande mais vous pouvez partir de tout ce que vous souhaitez, <strong>l&#8217;idée est de manipuler la CLI</strong>.</p>



<p>Donc prenons la liste des pods avec un petit filtre pour afficher qu&#8217;une colonne.</p>



<p><code>kubectl get pods -o wide | awk '{print $6}'</code></p>



<p>Collectons la colonne des ip des pods (d&#8217;où le $6). Et maintenant pour manipuler un peu plus nous pouvons par exemple <strong>filtrer sur le statut des pods</strong> et leurs ips.</p>



<p><code>kubectl get pods -o wide | awk '($3 ~ "Running") &amp;&amp; ($6 ~ "10.233.64.1.*") { print $6}'</code></p>



<h2 class="wp-block-heading">Et notre commande system ?</h2>



<p>On combine donc deux conditions. avec &amp;&amp; et on applique un ~ pour la recherche sur base de regex.</p>



<p>C&#8217;est déjà pas mal mais là on se dit ça serait kool de lister tous les pods et de <strong>leur appliquer une commande system</strong>.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Awk, sa fonction system... en 2min #zoom" width="625" height="352" src="https://www.youtube.com/embed/YQMcR0wkuik?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>Concentrons nous juste sur un ping par exemple :</p>



<p><code>kubectl get pods -o wide | awk '($3 ~ "Running") &amp;&amp; ($6 ~ "10.233.64.1.*") {print $1;system("ping -c 1 "$7)}'</code></p>



<p>Et on oubliera pas <strong>l&#8217;option -c1 pour ne pas boucler sur ping</strong> et ne réaliser qu&#8217;un seul ping (on pourrait définir un timeout plus approprié).</p>



<p>Nous avons simplement utilisé <strong>la fonction system de awk pour passer une commande</strong>&#8230; système. Simple est kool. On retrouve finalement ce que sait très bien faire xargs.</p>



<p>Alors avec notre kubectl on peut faire finalement quelque chose d&#8217;utile comme par exemple supprimé tous les pods en état evicted :</p>



<p><code>kubectl get pods -o wide | awk '($3 ~ "Evicted") {print "\n Drop &gt;&gt; "$1;system("kubectl delete pods "$1)}'</code></p>



<p>Et oui on retrouve là toute la facilité de awk car en plus vous le remarquez, on se permet <strong>même d&#8217;écrire une ligne avant</strong>. On pourrait en écrire une après ou encore faire un compteur pour dire le nombre de pods traités. Simple non ?</p>



<p>Bref <strong>AWK dans ce cas de figure permet de faire du personnalisable</strong> avec très peu de chose et sa fameuse commande system.</p>



<p>Alors si vous aimez ce genre de choses ou ces thématiques, venez vous joindre à la communauté Xavki. Vous pouvez aussi vous abonner pour ne pas manquer les prochaines vidéos.</p>



<h2 class="wp-block-heading"><strong>L&#8217;objectif de la chaine est simple : se former et progresser ensemble</strong></h2>



<p>Enfin si vous voulez vous faire la main avec bash et si vous disposez de légères notions avec docker, vous pouvez vous rendre sur cette série de vidéos. Une formation qui vous conduira à réaliser un script bash permettant d&#8217;instancier des conteneurs docker avec systemd et ssh.</p>



<p>Un bon moyen de joindre l&#8217;utile à l&#8217;agréable avec un poil de docker et à la sortie la possiblité d&#8217;utiliser des conteneurs comme des machines virtuelles avec un gros gain de temps au provisionning.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Scripting S02 - Bash - un exemple pour apprendre" width="625" height="352" src="https://www.youtube.com/embed/videoseries?list=PLn6POgpklwWpGvmy-ddJeDxxw2-QZ-AGp" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading">Se prendre au jeu de AWK</h2>



<p>Enfin si vous avez du temps et que vous êtes du genre curieux. Vous pouvez <strong>poursuivre sur le chemin de awk</strong>. En scriptant bien sûr et en utilisant des évolutions de ce langage <strong>comme le gawk ou encore le mawk</strong>. Ce dernier m&#8217;a été évoqué en parlant de performance. Il semblerait le plus rapide pour processer de la données réparties sur différents fichiers. Un article fait un petit focus <a href="https://invisible-island.net/mawk/">sur les performances du mawk ici</a>.</p>



<p>Cependant après avoir fait quelques tests maisons je ne parviens pas à des resultats explicites pour pouvoir en faire une réelle démonstration.</p>



<p>Toujours sur la performance en matière de processer du fichier text, vous pouvez aussi vous reporter <a href="https://lonkamikaze.github.io/2013/10/12/awk-text-processing-speed">à cet article</a>. Celui-ci fait une analyse comparative entre le nawk, gawk et mawk assez intéressante. Il s&#8217;agit de faire un comparatif sur l&#8217;utilisation de la mémoire par ses derniers.</p>
<p>L’article <a href="https://xavki.blog/awk-fonction-system-pratique/">AWK et sa fonction system tellement pratique</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>[Awk] : comment lister les ports des vhosts d&#8217;un apache ? (gsub, match, substr et regex)</title>
		<link>https://xavki.blog/awk-comment-lister-les-ports-des-vhosts-dun-apache-gsub-match-substr-et-regex/</link>
		
		<dc:creator><![CDATA[xavki]]></dc:creator>
		<pubDate>Mon, 15 Oct 2018 10:35:05 +0000</pubDate>
				<category><![CDATA[AWK]]></category>
		<guid isPermaLink="false">http://xavki.blog/?p=476</guid>

					<description><![CDATA[<p><img width="1880" height="1227" src="https://xavki.blog/wp-content/uploads/2018/08/pexels-photo-965345.jpeg" class="attachment- size- wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://xavki.blog/wp-content/uploads/2018/08/pexels-photo-965345.jpeg 1880w, https://xavki.blog/wp-content/uploads/2018/08/pexels-photo-965345-300x196.jpeg 300w, https://xavki.blog/wp-content/uploads/2018/08/pexels-photo-965345-768x501.jpeg 768w, https://xavki.blog/wp-content/uploads/2018/08/pexels-photo-965345-1024x668.jpeg 1024w, https://xavki.blog/wp-content/uploads/2018/08/pexels-photo-965345-1568x1023.jpeg 1568w" sizes="auto, (max-width: 1880px) 100vw, 1880px" />Awk c&#8217;est un peu mon petit préféré pour faire du oneline en manipulant des lignes. Et une fois de plus, il est encore bien sympa pour nous lister les ports utilisés pour chaque vhost d&#8217;un apache. Bon on se fait... <a href="https://xavki.blog/awk-comment-lister-les-ports-des-vhosts-dun-apache-gsub-match-substr-et-regex/" class="suite"><i class="fal fa-long-arrow-right"></i></a></p>
<p>L’article <a href="https://xavki.blog/awk-comment-lister-les-ports-des-vhosts-dun-apache-gsub-match-substr-et-regex/">[Awk] : comment lister les ports des vhosts d&#8217;un apache ? (gsub, match, substr et regex)</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="1880" height="1227" src="https://xavki.blog/wp-content/uploads/2018/08/pexels-photo-965345.jpeg" class="attachment- size- wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://xavki.blog/wp-content/uploads/2018/08/pexels-photo-965345.jpeg 1880w, https://xavki.blog/wp-content/uploads/2018/08/pexels-photo-965345-300x196.jpeg 300w, https://xavki.blog/wp-content/uploads/2018/08/pexels-photo-965345-768x501.jpeg 768w, https://xavki.blog/wp-content/uploads/2018/08/pexels-photo-965345-1024x668.jpeg 1024w, https://xavki.blog/wp-content/uploads/2018/08/pexels-photo-965345-1568x1023.jpeg 1568w" sizes="auto, (max-width: 1880px) 100vw, 1880px" /><p>Awk c&#8217;est un peu mon petit préféré pour faire du oneline en manipulant des lignes. Et une fois de plus, il est encore bien sympa pour nous lister les ports utilisés pour chaque vhost d&#8217;un apache. Bon on se fait un peu plaisir vous allez voir&#8230; et c&#8217;est pas pour frimer.</p>
<p>En gros, on veut un truc qui nous dise :</p>
<p>nom_du_vhost  =&gt;&gt; numéro_port</p>
<p>y compris si nous avons plusieurs ports (80 et 443).</p>
<p>Et en une ligne, voici le code que j&#8217;ai pu écrire :</p>
<pre>awk '/.*:[0-9]{1,3}&gt;/ &amp;&amp; /[^#]/
{match($0,/:[0-9]{1,3}&gt;/);
gsub("/.*/"," ",FILENAME);
print FILENAME"=&gt;&gt;", 
substr($0, RSTART+1, RLENGTH-2)}'
/etc/apache2/*.*</pre>
<p>Explications de cette commande d&#8217;une ligne un peu chargée :</p>
<ul>
<li>1ère ligne : restriction des lignes traitées en limitant aux lignes contenant &#8220;:&#8221; puis 1 à 3 chiffres allant de 0 à 9 et qui ne contient pas de &#8220;#&#8221; (pour éviter les lignes de commentaires)</li>
<li>2ème ligne : capture du pattern du port encadre de &#8220;:&#8221; et &#8220;&gt;&#8221;</li>
<li>3ème ligne : nettoyage du filename en retournant uniquement le nom de fichier</li>
<li>5ème ligne : récupération du pattern de la regex</li>
</ul>
<p>C&#8217;est un peu compliqué mais cela permet surtout de faire un peu de la manipulation pour s&#8217;entretenir en awk.</p>
<p>Et vous vous feriez comment pour réaliser ce genre d&#8217;opération ?</p>
<p>L’article <a href="https://xavki.blog/awk-comment-lister-les-ports-des-vhosts-dun-apache-gsub-match-substr-et-regex/">[Awk] : comment lister les ports des vhosts d&#8217;un apache ? (gsub, match, substr et regex)</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>[Linux] : lister les ports en écoute sur une machine</title>
		<link>https://xavki.blog/linux-lister-les-ports-ouverts-sur-une-machine/</link>
		
		<dc:creator><![CDATA[xavki]]></dc:creator>
		<pubDate>Wed, 19 Sep 2018 07:46:07 +0000</pubDate>
				<category><![CDATA[AWK]]></category>
		<category><![CDATA[System]]></category>
		<guid isPermaLink="false">https://xavki.wordpress.com/?p=265</guid>

					<description><![CDATA[<p><img width="1880" height="1253" src="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-101808.jpeg" class="attachment- size- wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-101808.jpeg 1880w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-101808-300x200.jpeg 300w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-101808-768x512.jpeg 768w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-101808-1024x682.jpeg 1024w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-101808-1568x1045.jpeg 1568w" sizes="auto, (max-width: 1880px) 100vw, 1880px" />La base pour les sysadmin, on a souvent besoin pour diagnostiquer des problèmes de lister les ports en écoute sur un serveur. Deux binaires peuvent réaliser ceci sans problème : netstat ou lsof. Avec lsof : sudo lsof -i -P... <a href="https://xavki.blog/linux-lister-les-ports-ouverts-sur-une-machine/" class="suite"><i class="fal fa-long-arrow-right"></i></a></p>
<p>L’article <a href="https://xavki.blog/linux-lister-les-ports-ouverts-sur-une-machine/">[Linux] : lister les ports en écoute sur une machine</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="1880" height="1253" src="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-101808.jpeg" class="attachment- size- wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-101808.jpeg 1880w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-101808-300x200.jpeg 300w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-101808-768x512.jpeg 768w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-101808-1024x682.jpeg 1024w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-101808-1568x1045.jpeg 1568w" sizes="auto, (max-width: 1880px) 100vw, 1880px" /><p>La base pour les sysadmin, on a souvent besoin pour diagnostiquer des problèmes de lister les ports en écoute sur un serveur. Deux binaires peuvent réaliser ceci sans problème : netstat ou lsof.</p>
<p>Avec lsof :</p>
<pre>sudo lsof -i -P | egrep LISTEN | awk -F ":" '{print $2}' |sort -u </pre>
<p>Avec netsat :</p>
<pre>netstat -ntaup | awk '/LISTEN/ &amp;&amp; match($0,/:[0-9]+/) {print substr( $0, RSTART+1, RLENGTH )}' | sort -u </pre>
<p>De la même manière on peut lister les connexions établies pour connaître les machines connectées :</p>
<pre>netstat -ntaup | awk '/ESTABLISHED/ {print $5}' </pre>
<p>L’article <a href="https://xavki.blog/linux-lister-les-ports-ouverts-sur-une-machine/">[Linux] : lister les ports en écoute sur une machine</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>[Awk][Linux] : Lister les processus non killable et le stopper avec ps aux + awk</title>
		<link>https://xavki.blog/awklinux-lister-les-processus-non-killable-et-le-stopper-avec-ps-aux-awk/</link>
		
		<dc:creator><![CDATA[xavki]]></dc:creator>
		<pubDate>Wed, 12 Sep 2018 07:35:50 +0000</pubDate>
				<category><![CDATA[AWK]]></category>
		<category><![CDATA[System]]></category>
		<guid isPermaLink="false">https://xavki.wordpress.com/?p=367</guid>

					<description><![CDATA[<p>La commande PS possède une multitude d&#8217;options et un affiche un grand nombre d&#8217;éléments. On ne va pas tous les passés en revue rassurez vous. Aujourd&#8217;hui, je vous propose un moyen simple de lister les process non killable. C&#8217;est ultra... <a href="https://xavki.blog/awklinux-lister-les-processus-non-killable-et-le-stopper-avec-ps-aux-awk/" class="suite"><i class="fal fa-long-arrow-right"></i></a></p>
<p>L’article <a href="https://xavki.blog/awklinux-lister-les-processus-non-killable-et-le-stopper-avec-ps-aux-awk/">[Awk][Linux] : Lister les processus non killable et le stopper avec ps aux + awk</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>La commande PS possède une multitude d&#8217;options et un affiche un grand nombre d&#8217;éléments. On ne va pas tous les passés en revue rassurez vous. Aujourd&#8217;hui, je vous propose un moyen simple de lister les process non killable. C&#8217;est ultra simple car il suffit de lire la colonne status de PS.</p>
<p>Cette colonne contient généralement une ou deux lettres :</p>
<ul>
<li>R : en cours</li>
<li>S : interrompable</li>
<li>s : c&#8217;est une session maitre</li>
<li>l : multi-threadé</li>
<li>&lt; : priorité haute</li>
<li>+ : processus d&#8217;arrière plan</li>
<li>D : non killable</li>
</ul>
<p>C&#8217;est se dernier cas qui peut être plus gênant car ce process ne peut être arrêté. Et pour lister les processus en fonction d&#8217;un statut c&#8217;est awk :</p>
<pre>ps aux | awk '{if ($8 ~ "D") print $0}'</pre>
<p>Pour le stopper ce n&#8217;est pas simple car un kill -9 du pid ne marchera pas. On peut éventuellement tenter un reboot forcé :</p>
<pre>reboot -n -f</pre>
<p>C&#8217;est un peu moche c&#8217;est clair. J&#8217;imagine qu&#8217;avec un lsof on peut aussi identifié le filesystem utilisé et le démonté. C&#8217;est pas beaucoup plus jolie.</p>
<p>Plus d&#8217;infos sur <a href="http://www.noah.org/wiki/Kill_-9_does_not_work">le site noah.org</a> et <a href="https://linux.die.net/man/1/ps">bien sûr la man page de PS</a></p>
<p>L’article <a href="https://xavki.blog/awklinux-lister-les-processus-non-killable-et-le-stopper-avec-ps-aux-awk/">[Awk][Linux] : Lister les processus non killable et le stopper avec ps aux + awk</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>[Awk] : convertir un csv en sql</title>
		<link>https://xavki.blog/awk-convertir-un-csv-en-sql/</link>
		
		<dc:creator><![CDATA[xavki]]></dc:creator>
		<pubDate>Wed, 05 Sep 2018 08:37:44 +0000</pubDate>
				<category><![CDATA[AWK]]></category>
		<guid isPermaLink="false">https://xavki.wordpress.com/?p=349</guid>

					<description><![CDATA[<p><img width="290" height="290" src="https://xavki.blog/wp-content/uploads/2018/07/sql-logo.png" class="attachment- size- wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://xavki.blog/wp-content/uploads/2018/07/sql-logo.png 290w, https://xavki.blog/wp-content/uploads/2018/07/sql-logo-150x150.png 150w" sizes="auto, (max-width: 290px) 100vw, 290px" />Encore une petite commande pour débuter et bien pratique. Nhésitez pas en commentaire à partager votre expérience sur ce genre de conversion. Awk va nous permettre de facilement convertir un csv en sql. D&#8217;ailleurs je suis en train de me... <a href="https://xavki.blog/awk-convertir-un-csv-en-sql/" class="suite"><i class="fal fa-long-arrow-right"></i></a></p>
<p>L’article <a href="https://xavki.blog/awk-convertir-un-csv-en-sql/">[Awk] : convertir un csv en sql</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="290" height="290" src="https://xavki.blog/wp-content/uploads/2018/07/sql-logo.png" class="attachment- size- wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://xavki.blog/wp-content/uploads/2018/07/sql-logo.png 290w, https://xavki.blog/wp-content/uploads/2018/07/sql-logo-150x150.png 150w" sizes="auto, (max-width: 290px) 100vw, 290px" /><p>Encore une petite commande pour débuter et bien pratique. Nhésitez pas en commentaire à partager votre expérience sur ce genre de conversion.</p>
<p>Awk va nous permettre de facilement convertir un csv en sql. D&#8217;ailleurs je suis en train de me dire qu&#8217;il faudrait que je passe un peu de temps dessus pour faire en sorte qu&#8217;il s&#8217;adapte automatiquement à toutes les longueurs de csv voir à récupérer l&#8217;entête pour les noms de champs ça serait plus malin.</p>
<p>En tout cas pour l&#8217;instant voici comment j&#8217;utilise régulièrement awk pour convertir mes fichiers csv (ou autre parfois) en sql.</p>
<pre># contenu du csv
cat attention.csv 
1;xav;dd;25d;28
2;paul;aa;25f;100

# ligne de commande
cat attention.csv | awk -F ";" '{print "INSERT INTO matable (champs1, champs2, champs3, champs4, champs5) values ('\''"$1"'\'', '\''"$2"'\'', '\''"$3"'\'', '\''"$4"'\'', '\''"$5"'\'');"}'

# le résultat
INSERT INTO matable (champs1, champs2, champs3, champs4, champs5) values ('1', 'xav', 'dd', '25d', '28');
INSERT INTO matable (champs1, champs2, champs3, champs4, champs5) values ('2', 'paul', 'aa', '25f', '100');
INSERT INTO matable (champs1, champs2, champs3, champs4, champs5) values ('3', 'thierry', 'bb', '14g', '75');

</pre>
<p>Donc :</p>
<ul>
<li>tout simplement on défini le séparateur avec -F</li>
<li>on print en insérant les variable des champs</li>
<li>la seule suptilité c&#8217;est d&#8217;échapper les quotes.</li>
</ul>
<p>L’article <a href="https://xavki.blog/awk-convertir-un-csv-en-sql/">[Awk] : convertir un csv en sql</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Interagir avec l&#8217;utilisateur via un prompt &#8211; Awk</title>
		<link>https://xavki.blog/interagir-utilisateur-prompt-awk/</link>
		
		<dc:creator><![CDATA[xavki]]></dc:creator>
		<pubDate>Tue, 21 Aug 2018 07:50:37 +0000</pubDate>
				<category><![CDATA[AWK]]></category>
		<guid isPermaLink="false">https://xavki.wordpress.com/?p=231</guid>

					<description><![CDATA[<p><img width="1854" height="1300" src="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-968243.jpeg" class="attachment- size- wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-968243.jpeg 1854w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-968243-300x210.jpeg 300w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-968243-768x539.jpeg 768w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-968243-1024x718.jpeg 1024w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-968243-1568x1099.jpeg 1568w" sizes="auto, (max-width: 1854px) 100vw, 1854px" />Awk  c&#8217;est bien et je l&#8217;ai déjà dit on le sous exploite souvent. Il permet souvent de manipuler des fichier notamment des tableaux. Mais bon Awk c&#8217;est aussi un language assez complet qui permet de faire des programmes plus étendus... <a href="https://xavki.blog/interagir-utilisateur-prompt-awk/" class="suite"><i class="fal fa-long-arrow-right"></i></a></p>
<p>L’article <a href="https://xavki.blog/interagir-utilisateur-prompt-awk/">Interagir avec l&#8217;utilisateur via un prompt &#8211; Awk</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="1854" height="1300" src="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-968243.jpeg" class="attachment- size- wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-968243.jpeg 1854w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-968243-300x210.jpeg 300w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-968243-768x539.jpeg 768w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-968243-1024x718.jpeg 1024w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-968243-1568x1099.jpeg 1568w" sizes="auto, (max-width: 1854px) 100vw, 1854px" /><p>Awk  c&#8217;est bien et je l&#8217;ai déjà dit on le sous exploite souvent. Il permet souvent de manipuler des fichier notamment des tableaux. Mais bon Awk c&#8217;est aussi un language assez complet qui permet de faire des programmes plus étendus et pas que des one-liners.</p>
<p>Le truc bête est méchant c&#8217;est de commencer par interagir avec l&#8217;utilisateur. Par exemple on va lui poser une question et afficher la réponse. En gros c&#8217;est du awk pour les nuls.</p>
<p>Voici comment faire :</p>
<pre>#!/usr/bin/awk  BEGIN{         printf("Entrez votre prénom: ");         getline nom &lt; "-"         print "Bonjour "nom" !" } </pre>
<p>Donc tout se devine:</p>
<ul>
<li>on oublie pas de préciser la localisation du programme</li>
<li>on utilise le BEGIN (début de fichier ou en-tête)</li>
<li>on affiche une invite</li>
<li>on récupère le contenu rentré par le user et on le sotck dans la variable nom</li>
<li>et on affiche le résultat</li>
</ul>
<p>Et on exécute façon awk :</p>
<pre>└─ $ ▶ awk -f prompt.awk  Entrez votre prénom: xavki Bonjour xavki ! </pre>
<p><div id="attachment_232" style="width: 1890px" class="wp-caption alignnone"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-232" src="http://xavki.blog/wp-content/uploads/2018/07/pexels-photo-968243.jpeg?w=1880" class="alignnone size-full wp-image-232" height="1318" alt="photo of person holding h cutout decor" width="1880" srcset="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-968243.jpeg 1854w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-968243-300x210.jpeg 300w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-968243-768x539.jpeg 768w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-968243-1024x718.jpeg 1024w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-968243-1568x1099.jpeg 1568w" sizes="auto, (max-width: 1880px) 100vw, 1880px" /><p id="caption-attachment-232" class="wp-caption-text">Photo by rawpixel.com on <a href="https://www.pexels.com/" rel="nofollow">Pexels.com</a></p></div></p>
<p>L’article <a href="https://xavki.blog/interagir-utilisateur-prompt-awk/">Interagir avec l&#8217;utilisateur via un prompt &#8211; Awk</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>[AWK] : comment utiliser une variable shell dans awk ?</title>
		<link>https://xavki.blog/awk-comment-utiliser-une-variable-shell-dans-awk/</link>
		
		<dc:creator><![CDATA[xavki]]></dc:creator>
		<pubDate>Wed, 15 Aug 2018 08:47:15 +0000</pubDate>
				<category><![CDATA[AWK]]></category>
		<guid isPermaLink="false">https://xavki.wordpress.com/?p=277</guid>

					<description><![CDATA[<p><img width="1880" height="1134" src="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-8938952.jpeg" class="attachment- size- wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-8938952.jpeg 1880w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-8938952-300x181.jpeg 300w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-8938952-768x463.jpeg 768w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-8938952-1024x618.jpeg 1024w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-8938952-1568x946.jpeg 1568w" sizes="auto, (max-width: 1880px) 100vw, 1880px" />Awk est  un language bien sympa mais parfois on hésite à l&#8217;utiliser car il faut se prendre la tête à lui faire asser des variables. Du coup on tort le truc dans tous les sens alors qu&#8217;il suffit parfois de... <a href="https://xavki.blog/awk-comment-utiliser-une-variable-shell-dans-awk/" class="suite"><i class="fal fa-long-arrow-right"></i></a></p>
<p>L’article <a href="https://xavki.blog/awk-comment-utiliser-une-variable-shell-dans-awk/">[AWK] : comment utiliser une variable shell dans awk ?</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="1880" height="1134" src="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-8938952.jpeg" class="attachment- size- wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-8938952.jpeg 1880w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-8938952-300x181.jpeg 300w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-8938952-768x463.jpeg 768w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-8938952-1024x618.jpeg 1024w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-8938952-1568x946.jpeg 1568w" sizes="auto, (max-width: 1880px) 100vw, 1880px" /><p>Awk est  un language bien sympa mais parfois on hésite à l&#8217;utiliser car il faut se prendre la tête à lui faire asser des variables. Du coup on tort le truc dans tous les sens alors qu&#8217;il suffit parfois de récupérer les variables shell pour les réutiliser dans awk.</p>
<p>Je vous propose deux options mais j&#8217;ai une grosse préférence pour la première.</p>
<p>La première c&#8217;est d&#8217;uliser l&#8217;option -v :</p>
<pre>└─ $ ▶ variable="toto";awk -v var="$variable" 'BEGIN {print var}' toto </pre>
<p>La seconde en lui passant une variable d&#8217;environnement avec ENVIRON :</p>
<pre>└─ $ ▶ variable=toto awk 'BEGIN {print ENVIRON["variable"]}' toto </pre>
<p>L’article <a href="https://xavki.blog/awk-comment-utiliser-une-variable-shell-dans-awk/">[AWK] : comment utiliser une variable shell dans awk ?</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>[AWK] : créer un serveur web minimaliste</title>
		<link>https://xavki.blog/awk-creer-un-serveur-web-minimaliste/</link>
		
		<dc:creator><![CDATA[xavki]]></dc:creator>
		<pubDate>Fri, 10 Aug 2018 07:55:45 +0000</pubDate>
				<category><![CDATA[AWK]]></category>
		<guid isPermaLink="false">https://xavki.wordpress.com/?p=245</guid>

					<description><![CDATA[<p>Dans un post précédent, nous avions vu comment lancer un serveur web en python. Cela ne prenait qu&#8217;une seule ligne par les miracles de python. Mais saviez vous qu&#8217;avec AWK vous pouviez faire pareil ? c&#8217;est fou non ? ben... <a href="https://xavki.blog/awk-creer-un-serveur-web-minimaliste/" class="suite"><i class="fal fa-long-arrow-right"></i></a></p>
<p>L’article <a href="https://xavki.blog/awk-creer-un-serveur-web-minimaliste/">[AWK] : créer un serveur web minimaliste</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Dans un post précédent, nous avions vu <a href="https://xavki.wordpress.com/2018/06/28/python-serveur-web/">comment lancer un serveur web en python</a>. Cela ne prenait qu&#8217;une seule ligne par les miracles de python.</p>
<p>Mais saviez vous qu&#8217;avec AWK vous pouviez faire pareil ? c&#8217;est fou non ? ben oui c&#8217;est possible mais attention cela ne se fait pas en une seule ligne (ou sinon elle sera bien loin du one-liner).</p>
<pre>#!/usr/bin/gawk -f
BEGIN {
if (ARGC &lt; 2) { print "Usage: wwwawk  file.html"; exit 0 }
	Concnt = 1;
        while (1) {
        RS = ORS = "\r\n";
        HttpService = "/inet/tcp/8080/0/0";
        getline Dat &lt; ARGV[1];
        Datlen = length(Dat) + length(ORS);
        while (HttpService |&amp; getline ){
		if (ERRNO) { print "Connection error: " ERRNO; exit 1}
                print "client: " $0;
                if ( length($0) &lt; 1 ) break;
        }
        print "HTTP/1.1 200 OK"             |&amp; HttpService;
        print "Content-Type: text/html"     |&amp; HttpService;
        print "Server: wwwawk/1.0"          |&amp; HttpService;
        print "Connection: close"           |&amp; HttpService;
        print "Content-Length: " Datlen ORS |&amp; HttpService;
        print Dat                           |&amp; HttpService;
        close(HttpService);
        print "OK: served file " ARGV[1] ", count " Concnt;
        Concnt++;
      }
} 
</pre>
<p>&nbsp;</p>
<p>Après avoir créé votre fichier donnez lui les droits qui vont bien (755) par exemple et créez une fichier file.html. Lancez le script et rendez vous sur votre localhost:8080 et le fichier sera servi.</p>
<p>Je trouve ça trop fort quand même. Pas vous ?</p>
<p>Source : <a href="http://tuxgraphics.org/~guido/scripts/awk-one-liner.html">bon article de tuxgraphics</a></p>
<p>L’article <a href="https://xavki.blog/awk-creer-un-serveur-web-minimaliste/">[AWK] : créer un serveur web minimaliste</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>[Bash][AWK] : Lister les commandes le top de vos commandes</title>
		<link>https://xavki.blog/bashawk-lister-les-commandes-le-top-de-vos-commandes/</link>
					<comments>https://xavki.blog/bashawk-lister-les-commandes-le-top-de-vos-commandes/#comments</comments>
		
		<dc:creator><![CDATA[xavki]]></dc:creator>
		<pubDate>Mon, 23 Jul 2018 10:13:49 +0000</pubDate>
				<category><![CDATA[AWK]]></category>
		<category><![CDATA[Bash]]></category>
		<guid isPermaLink="false">https://xavki.wordpress.com/?p=191</guid>

					<description><![CDATA[<p><img width="1880" height="1245" src="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-669615.jpeg" class="attachment- size- wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-669615.jpeg 1880w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-669615-300x199.jpeg 300w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-669615-768x509.jpeg 768w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-669615-1024x678.jpeg 1024w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-669615-1568x1038.jpeg 1568w" sizes="auto, (max-width: 1880px) 100vw, 1880px" />L&#8217;historique de Linux est utilisable via le binaire &#8220;history&#8221; ou avec un simple vi de &#8220;.bash_history&#8221;. Mais on l&#8217;utilise plus régulièrement à l&#8217;aide de la commande ctrl+r en tapant les mots à rechercher dans votre historique. Un bon moyen pour... <a href="https://xavki.blog/bashawk-lister-les-commandes-le-top-de-vos-commandes/" class="suite"><i class="fal fa-long-arrow-right"></i></a></p>
<p>L’article <a href="https://xavki.blog/bashawk-lister-les-commandes-le-top-de-vos-commandes/">[Bash][AWK] : Lister les commandes le top de vos commandes</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="1880" height="1245" src="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-669615.jpeg" class="attachment- size- wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-669615.jpeg 1880w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-669615-300x199.jpeg 300w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-669615-768x509.jpeg 768w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-669615-1024x678.jpeg 1024w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-669615-1568x1038.jpeg 1568w" sizes="auto, (max-width: 1880px) 100vw, 1880px" /><p>L&#8217;historique de Linux est utilisable via le binaire &#8220;history&#8221; ou avec un simple vi de &#8220;.bash_history&#8221;. Mais on l&#8217;utilise plus régulièrement à l&#8217;aide de la commande ctrl+r en tapant les mots à rechercher dans votre historique. Un bon moyen pour relancer une commande déjà utilisée.</p>
<p>Mais on peut faire d&#8217;autres choses avec notamment avoir un vrai système de log de l&#8217;historique avec la mise en place d&#8217;un archivage de vos commandes. On reverra cela plus tard.</p>
<p><div id="attachment_media-67" style="width: 1890px" class="wp-caption alignnone"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-media-67" class="alignnone size-full wp-image-192" src="http://xavki.blog/wp-content/uploads/2018/07/pexels-photo-669615.jpeg" alt="person writing on notebook" width="1880" height="1245" srcset="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-669615.jpeg 1880w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-669615-300x199.jpeg 300w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-669615-768x509.jpeg 768w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-669615-1024x678.jpeg 1024w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-669615-1568x1038.jpeg 1568w" sizes="auto, (max-width: 1880px) 100vw, 1880px" /><p id="caption-attachment-media-67" class="wp-caption-text">Photo by Lukas on <a href="https://www.pexels.com/" rel="nofollow">Pexels.com</a></p></div></p>
<p>Utiliser les statistiques de votre historique c&#8217;est aussi un bon moyen de voir ce que vous faites le plus souvent. Et du coup vous pouvez y trouver de bonnes idées pour créer les alias les plus adéquates pour gagner en performance devant votre clavier.</p>
<p>Un bon moyen pour faire ces statistiques :</p>
<pre>history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
</pre>
<p>Donc :</p>
<ul>
<li>on lance history pour travailler dessus</li>
<li>on utilise awk pour dresser la liste des top commandes</li>
<li>on ordonne le tout avec un sort</li>
</ul>
<p>&nbsp;</p>
<p>L’article <a href="https://xavki.blog/bashawk-lister-les-commandes-le-top-de-vos-commandes/">[Bash][AWK] : Lister les commandes le top de vos commandes</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://xavki.blog/bashawk-lister-les-commandes-le-top-de-vos-commandes/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>[AWK][Linux] : Supprimer les doublons de votre PATH&#8230; RS FS et ORS OFS</title>
		<link>https://xavki.blog/awk-linux-supprimer-doublons-path/</link>
		
		<dc:creator><![CDATA[xavki]]></dc:creator>
		<pubDate>Thu, 19 Jul 2018 12:56:06 +0000</pubDate>
				<category><![CDATA[AWK]]></category>
		<category><![CDATA[System]]></category>
		<guid isPermaLink="false">https://xavki.wordpress.com/?p=157</guid>

					<description><![CDATA[<p><img width="1733" height="1300" src="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-800767.jpeg" class="attachment- size- wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-800767.jpeg 1733w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-800767-300x225.jpeg 300w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-800767-768x576.jpeg 768w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-800767-1024x768.jpeg 1024w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-800767-1568x1176.jpeg 1568w" sizes="auto, (max-width: 1733px) 100vw, 1733px" />Un truc typique sur linux c&#8217;est d&#8217;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&#8217;est très moche. Je ne vous... <a href="https://xavki.blog/awk-linux-supprimer-doublons-path/" class="suite"><i class="fal fa-long-arrow-right"></i></a></p>
<p>L’article <a href="https://xavki.blog/awk-linux-supprimer-doublons-path/">[AWK][Linux] : Supprimer les doublons de votre PATH&#8230; RS FS et ORS OFS</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="1733" height="1300" src="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-800767.jpeg" class="attachment- size- wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-800767.jpeg 1733w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-800767-300x225.jpeg 300w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-800767-768x576.jpeg 768w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-800767-1024x768.jpeg 1024w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-800767-1568x1176.jpeg 1568w" sizes="auto, (max-width: 1733px) 100vw, 1733px" /><p>Un truc typique sur linux c&#8217;est d&#8217;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&#8217;est très moche.</p>
<p>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&#8217;environnement.</p>
<pre>export PATH=`echo -n $PATH | awk -v RS=":" '{ if (!x[$0]++){printf s $0 ; s=":"}}'`
</pre>
<p><strong>L&#8217;option RS de awk</strong> s&#8217;appelle record separator. Il permet de définir les séparateur de ligne.</p>
<p style="text-align:left;">L&#8217;autre option souvent utilisée avec awk c&#8217;est FS pour fiels separator. On défini alors les séparateur de champs comme par exemple le &#8220;;&#8221; pour les fichiers de type csv.</p>
<p><div id="attachment_158" style="width: 310px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-158" class="alignnone size-medium wp-image-158" src="http://xavki.blog/wp-content/uploads/2018/07/pexels-photo-800767.jpeg?w=300" alt="gaming cards on hands" width="300" height="225" srcset="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-800767.jpeg 1733w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-800767-300x225.jpeg 300w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-800767-768x576.jpeg 768w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-800767-1024x768.jpeg 1024w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-800767-1568x1176.jpeg 1568w" sizes="auto, (max-width: 300px) 100vw, 300px" /><p id="caption-attachment-158" class="wp-caption-text">Photo by Midhun Joy on Pexels.com</p></div></p>
<p>Ensuite pour aller un petit peu plus loin on peut aussi utiliser les output de ces options à savoir OFS ou ORS. Ainsi c&#8217;est l&#8217;inverse on définit comment on souhaite afficher les spérateur de champs ou de ligne.</p>
<p>Par exemple :</p>
<pre>awk -F':' 'BEGIN{OFS="&gt;";} {print $3,$4;}' /etc/passwd
1001&gt;1001
1002&gt;1002
1003&gt;1003
</pre>
<p>En gros on parcours le passwd en définissant les champs par un FS valant &#8220;:&#8221;. Puis pour la sortie du résultat on redéfinie un séparateur de champ avec un OFS valant &#8220;&gt;&#8221;.</p>
<p>Il y a aussi dans les options courantes pour les oneliner :</p>
<ul>
<li>NR (number rows) : affiche le nombre de ligne</li>
<li>NF (number fields) : nombre de champs</li>
</ul>
<p>Ainsi on pourrait afficher le nombre de ligne dont le nombre de champs vaut une certaine valeur.</p>
<p>AWK est un vrai couteau suisse pour qui sait l&#8217;utiliser.</p>
<p>L’article <a href="https://xavki.blog/awk-linux-supprimer-doublons-path/">[AWK][Linux] : Supprimer les doublons de votre PATH&#8230; RS FS et ORS OFS</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>[AWK][Tips] : supprimer les lignes en doublon</title>
		<link>https://xavki.blog/awktips-supprimer-les-lignes-en-doublon/</link>
		
		<dc:creator><![CDATA[xavki]]></dc:creator>
		<pubDate>Sat, 14 Jul 2018 13:32:24 +0000</pubDate>
				<category><![CDATA[AWK]]></category>
		<category><![CDATA[Trucs et astuces]]></category>
		<guid isPermaLink="false">https://xavki.wordpress.com/?p=174</guid>

					<description><![CDATA[<p><img width="1880" height="1253" src="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-234171.jpeg" class="attachment- size- wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-234171.jpeg 1880w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-234171-300x200.jpeg 300w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-234171-768x512.jpeg 768w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-234171-1024x682.jpeg 1024w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-234171-1568x1045.jpeg 1568w" sizes="auto, (max-width: 1880px) 100vw, 1880px" />Celle-là elle est facile me diront certains mais bon c&#8217;est parfois utile de le rappeler. Awk est un outil bien pratique pas toujours plus court que les autres mais tellement facile à pipper. Comment supprimer les lignes en doublons d&#8217;un... <a href="https://xavki.blog/awktips-supprimer-les-lignes-en-doublon/" class="suite"><i class="fal fa-long-arrow-right"></i></a></p>
<p>L’article <a href="https://xavki.blog/awktips-supprimer-les-lignes-en-doublon/">[AWK][Tips] : supprimer les lignes en doublon</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="1880" height="1253" src="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-234171.jpeg" class="attachment- size- wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-234171.jpeg 1880w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-234171-300x200.jpeg 300w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-234171-768x512.jpeg 768w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-234171-1024x682.jpeg 1024w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-234171-1568x1045.jpeg 1568w" sizes="auto, (max-width: 1880px) 100vw, 1880px" /><p>Celle-là elle est facile me diront certains mais bon c&#8217;est parfois utile de le rappeler. Awk est un outil bien pratique pas toujours plus court que les autres mais tellement facile à pipper.</p>
<p>Comment supprimer les lignes en doublons d&#8217;un fichier ? qu&#8217;elles soient à la suite ou non d&#8217;ailleurs.</p>
<p>Autant qu&#8217;en bash si on utilise le binaire sort cela va vite avec cat monfichier | sort -u &#8230; mais avec awk on peut se creuser la tête.</p>
<p>Voici donc la solution :</p>
<pre>awk '! a[$0]++' fichier.txt 
</pre>
<p>Donc on créé un tableau (array) avec pour clé $0 soit le contenu de la ligne. Et on affiche le contenu dès lors que la ligne suivante est différente (on incrémente de 1 avec le ++.</p>
<p>En un peu plus long il y avait :</p>
<pre>
awk '!($0 in a) {a[$0];print}' fichier.txt 
</pre>
<p>Que dire de plus plus ? pas grand chose car le but est de faire court.</p>
<p>L’article <a href="https://xavki.blog/awktips-supprimer-les-lignes-en-doublon/">[AWK][Tips] : supprimer les lignes en doublon</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>[AWK][Tips] : calculer le cumul d&#8217;une colonne</title>
		<link>https://xavki.blog/awk-calculer-cumul/</link>
		
		<dc:creator><![CDATA[xavki]]></dc:creator>
		<pubDate>Wed, 11 Jul 2018 12:02:46 +0000</pubDate>
				<category><![CDATA[AWK]]></category>
		<guid isPermaLink="false">https://xavki.wordpress.com/?p=161</guid>

					<description><![CDATA[<p><img width="1880" height="1253" src="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-2341711.jpeg" class="attachment- size- wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-2341711.jpeg 1880w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-2341711-300x200.jpeg 300w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-2341711-768x512.jpeg 768w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-2341711-1024x682.jpeg 1024w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-2341711-1568x1045.jpeg 1568w" sizes="auto, (max-width: 1880px) 100vw, 1880px" />Awk est un très bon outil. On peut l&#8217;utiliser soit de manière peu développée (oneliner) ou plus élaborée comme un vrai language de programmation. Généralement on l&#8217;utilise pour son côté conci sur une ligne. Aujourd&#8217;hui je vous propose un classique... <a href="https://xavki.blog/awk-calculer-cumul/" class="suite"><i class="fal fa-long-arrow-right"></i></a></p>
<p>L’article <a href="https://xavki.blog/awk-calculer-cumul/">[AWK][Tips] : calculer le cumul d&#8217;une colonne</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="1880" height="1253" src="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-2341711.jpeg" class="attachment- size- wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-2341711.jpeg 1880w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-2341711-300x200.jpeg 300w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-2341711-768x512.jpeg 768w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-2341711-1024x682.jpeg 1024w, https://xavki.blog/wp-content/uploads/2018/07/pexels-photo-2341711-1568x1045.jpeg 1568w" sizes="auto, (max-width: 1880px) 100vw, 1880px" /><p>Awk est un très bon outil. On peut l&#8217;utiliser soit de manière peu développée (oneliner) ou plus élaborée comme un vrai language de programmation. Généralement on l&#8217;utilise pour son côté conci sur une ligne.</p>
<p>Aujourd&#8217;hui je vous propose <strong>un classique de AWK à savoir calculer le cumul d&#8217;une colonne</strong>. Rien de bien sorcier et en plus ça permet de bien entrer dans le sujet. Je reviendrai plus tard sur les séparateurs mais on va se limiter à FS pour commencer. FS pour Fields Separator. Par exemple pour un fichier de type csv -FS=&#8221;;&#8221;. Ensuite on peut appeler les colonnes en fonction de leur ordre $1 = première colonne. Et $0 représente toute la ligne.</p>
<p>Ainsi avec un fichier contenant :</p>
<pre>└─ $ ▶ cat fichier.txt 
toto;1;2;url
xxx;2;5;url2
yyy;2;6;url3
</pre>
<p>On a donc 3 lignes de 4 colonnes. On cherche à calculer la somme de la troisème colonne. Rien de plus simple :</p>
<pre># afficher le contenu du fichier
awk '{print $0} fichier.txt'

# pour afficher la troisième colonne uniquement
awk -FS ";" '{print $3}' fichier.txt

# pour calculer le cumul de la colonne 3
awk -FS ";" '{CUMUL += $3} END {print CUMUL}' fichier.txt
</pre>
<p>Donc là on y est :</p>
<ul>
<li>on défini le séparateur de champs</li>
<li>on créé une variable CUMUL dans laquel on ajoute la valeur de la colonne 3 à chaque ligne</li>
<li>et en dernière ligne on affiche le contenu de la variable CUMUL</li>
</ul>
<p>C&#8217;est simple non ?</p>
<p>Le gros intérêt c&#8217;est de pouvoir &#8220;piper&#8221; tout cela en appliquant avant des commandes bash, sed&#8230;.</p>
<p>Promis dans pas longtemps on va revenir sur les FS, OFS, NR, ONR&#8230;</p>
<p>L’article <a href="https://xavki.blog/awk-calculer-cumul/">[AWK][Tips] : calculer le cumul d&#8217;une colonne</a> est apparu en premier sur <a href="https://xavki.blog">Xavki</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
