<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Le TALblog de Karl &#38; Quentin</title>
	<atom:link href="http://ksqp.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://ksqp.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Wed, 28 Nov 2007 23:21:53 +0000</lastBuildDate>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='ksqp.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Le TALblog de Karl &#38; Quentin</title>
		<link>http://ksqp.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://ksqp.wordpress.com/osd.xml" title="Le TALblog de Karl &#38; Quentin" />
	<atom:link rel='hub' href='http://ksqp.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Le Script en PERL &#8211; Premier essai</title>
		<link>http://ksqp.wordpress.com/2007/11/28/le-script-en-perl-premier-essai/</link>
		<comments>http://ksqp.wordpress.com/2007/11/28/le-script-en-perl-premier-essai/#comments</comments>
		<pubDate>Wed, 28 Nov 2007 23:21:11 +0000</pubDate>
		<dc:creator>ksqp</dc:creator>
				<category><![CDATA[projet]]></category>
		<category><![CDATA[fichiers]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://ksqp.wordpress.com/2007/11/28/le-script-en-perl-premier-essai/</guid>
		<description><![CDATA[Or donc, nous disposions d&#8217;un script fonctionnel mais basé sur une commande non-universelle en ce qui concerne les systèmes de type BASH. Après un essai infructueux sur d&#8217;autres shells (csh et tcsh), qui renvoyaient des messages d&#8217;erreurs sans dire où se trouvait l&#8217;erreur (ce qui aurait impliqué de revoir tout le programme), nous nous sommes [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ksqp.wordpress.com&amp;blog=2212899&amp;post=11&amp;subd=ksqp&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Or donc, nous disposions d&#8217;un script fonctionnel mais basé sur une commande non-universelle en ce qui concerne les systèmes de type BASH.</p>
<p>Après un essai infructueux sur d&#8217;autres shells (csh et tcsh), qui renvoyaient des messages d&#8217;erreurs sans dire <em>où</em><strong> </strong>se trouvait l&#8217;erreur (ce qui aurait impliqué de revoir tout le programme), nous nous sommes lancés dans la production d&#8217;un script en PERL. Parce que <strong>substr() </strong>est une fonction native de PERL. Et ça, c&#8217;est bien !</p>
<p>Avertissement : N&#8217;essayez pas de retaper tout un script. C&#8217;est un coup à oublier des morceaux. Commencez par remplacer tous les &#8220;echo&#8221; par &#8220;print&#8221;, ça gagne du temps.<br />
Ensuite, la syntaxe PERL est quand même assez proche de celle de BASH,les modifs sont de l&#8217;ordre de l&#8217;ajout de &#8216;;&#8217; et&#8230; bon, en fait, il y a quelques subtilités :<br />
Par exemple, en BASH, on avait tout un pavé  pour s&#8217;assurer qu&#8217;un nom de répertoire saisi par l&#8217;utilisateur ne comportait pas de / à la fin.<br />
En PERL, cette opération donne :</p>
<ul>
<li>chomp($inputdirectory=&lt;STDIN&gt;);<br />
if ($inputdirectory=~/\w*\/$/)<br />
{</p>
<blockquote><p>chop($inputdirectory);</p></blockquote>
<p>}</li>
</ul>
<blockquote>
<blockquote><p><font size="-1">Une petite explication ?<br />
- la première ligne récupère une chaîne de caractère saisie par l&#8217;utilisateur ($inputdirectory=&lt;STDIN&gt;) et lui enlève son retour chariot final (commande <strong>chomp()</strong>). Notez le &#8216;;&#8217; en fin de ligne&#8230; C&#8217;est le défaut de PERL : toute les instructions sont terminées par un point-virgule.<br />
- la deuxième ligne est un <strong>if</strong> classique&#8230; Or is it ? En effet, PERL a l&#8217;excellente capacité de gérer les <u>expressions régulières</u>. Là, on a en fait pris pour condition :<br />
&#8220;$inputdirectory est une chaîne de caractère terminée par slash&#8221;. &#8216;=~&#8217; signifie qu&#8217;on va employer une expression régulière,  or les expressions régulières sont ouvertes et fermées par des slashs &#8216;/&#8217; . Du coup, il faut échapper un slash qui ferait partie de l&#8217;expression en le faisant précéder d&#8217;un antislash &#8216;\&#8217;, caractère d&#8217;échappement par défaut. De plus, &#8216;\w&#8217; indique &#8220;n&#8217;importe quel caractère alphanumérique&#8221;, et l&#8217;étoile indique que \w est pris un nombre indéfini de fois (entre 0 et +∞). Autrement dit &#8216;\w*&#8217; indique &#8220;toute chaîne de caractères alphanumériques&#8221;. En l&#8217;occurence, suivi de &#8216;\/&#8217; et &#8216;$ &#8216;, on a &#8220;toute chaîne alphanumérique se terminant par &#8216;/&#8217; : En effet, $ indique une fin de chaîne. Donc le caractère juste avant &#8216;$&#8217; est le dernier de la chaîne.</font></p></blockquote>
</blockquote>
<p>Bon, ça c&#8217;est juste une petite simplification. Après, il y a notre histoire de <strong>substr</strong> facile, tout ça&#8230;<br />
Mais abordons la grosse-modif-qui-tache tout de suite, ce sera fait.<br />
PERL a sa façon bien à lui de gérer les <em>fichiers</em>. Or, on ne fait que ça dans ce script. Du coup, à l&#8217;heure actuelle, on a comme qui dirait un pépin à ce niveau là.<br />
Mais parlons théorie :<br />
au lieu de créer une variable $tablo qui contiendrait un nom de fichier et de devoir rajouter &#8216;&gt;&gt; ./tabs/$tablo&#8217; à la fin de nos lignes <strong>echo, </strong>nous allons :<br />
- ouvrir un <em>manipulateur de fichier</em> nommé TABLO<br />
- avoir plein de jolies lignes du genre &#8216;print TABLO &#8220;&lt;HTML&gt;blah-blah-blah&lt;/HTML&gt;&#8221;;<br />
- fermer le manipulateur de fichiers.</p>
<p>Ouvrir un manipulateur de fichier, ça veut dire aller chercher un fichier et le donner en pâture au programme avec quelques conditions (droits de lecture/ecriture). Ca donne ça :<br />
<strong>open</strong> (TABLO,&#8221;+&gt;./tabs/$tablo&#8221;);</p>
<blockquote>
<blockquote><p><font size="-1">&#8216;+&gt;&#8217;, ça veut dire qu&#8217;on efface un contenu éventuel du fichier pour ensuite entasser ce qu&#8217;on veut dedans.</font><br />
<font size="-1"> TABLO, c&#8217;est le nom du flux, qu&#8217;on retrouvera dans les commandes <strong>print</strong>.</font><br />
<font size="-1"> et &#8216;./tabs/$tablo&#8217;, c&#8217;est le fichier vers lequel pointe notre flux.</font></p></blockquote>
</blockquote>
<p>puis on finit avec un<strong> </strong>&#8216;<strong>close</strong>(TABLO);&#8217; de bon aloi pour éviter d&#8217;écrire à nouveau dans le fichier par erreur et rendre un peu de ressource au système.</p>
<p>La suite dès que nous aurons un script qui fonctionne&#8230; C&#8217;est à dire très bientôt !</p>
<p>QP</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ksqp.wordpress.com/11/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ksqp.wordpress.com/11/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ksqp.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ksqp.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ksqp.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ksqp.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ksqp.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ksqp.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ksqp.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ksqp.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ksqp.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ksqp.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ksqp.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ksqp.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ksqp.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ksqp.wordpress.com/11/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ksqp.wordpress.com&amp;blog=2212899&amp;post=11&amp;subd=ksqp&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ksqp.wordpress.com/2007/11/28/le-script-en-perl-premier-essai/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8c1083e573428fcd4afafb9afebbcb5?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ksqp</media:title>
		</media:content>
	</item>
		<item>
		<title>Le Script BASH &#8211; Second Coming</title>
		<link>http://ksqp.wordpress.com/2007/11/27/le-script-bash-second-coming/</link>
		<comments>http://ksqp.wordpress.com/2007/11/27/le-script-bash-second-coming/#comments</comments>
		<pubDate>Tue, 27 Nov 2007 15:03:40 +0000</pubDate>
		<dc:creator>ksqp</dc:creator>
				<category><![CDATA[projet]]></category>
		<category><![CDATA[BASH]]></category>
		<category><![CDATA[case]]></category>
		<category><![CDATA[fonctions]]></category>
		<category><![CDATA[procédures]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://ksqp.wordpress.com/2007/11/27/le-script-bash-second-coming/</guid>
		<description><![CDATA[Souvenez vous&#8230; nous vous avions laissés il y a au moins deux minutes avec un script BASH qui générait un tableau très simple. Ca a certes fait avancer un peu notre schmilblick, mais le plus gros reste à faire. Surtout à écrire. Pour chaque lien, il va falloir rajouter trois cases : - le lien [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ksqp.wordpress.com&amp;blog=2212899&amp;post=6&amp;subd=ksqp&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Souvenez vous&#8230; nous vous avions laissés il y a au moins deux minutes avec un script BASH qui générait un tableau <em>très </em>simple.<br />
Ca a certes fait avancer un peu notre schmilblick, mais le plus gros reste à faire. Surtout à écrire.</p>
<p>Pour chaque lien, il va falloir rajouter trois cases :<br />
- le lien vers la page aspirée en local (oui, nous sommes des pirates sans scrupules, sans vergogne et sans guinaires. Yohoho, et une bouteille de rhum!)<br />
- le lien vers la version texte brut de la page locale (parce qu&#8217;en plus on mutile les pages web ! Bwahaha !)<br />
- le lien vers la concordance, c&#8217;est à dire le mot dans son contexte dans la page aspirée.</p>
<p>Pour ce faire, trois commandes Unix vont nous être utiles :<br />
- WGET, sous la forme &#8220;wget -O &lt;page à aspirer&gt; &lt;destination&gt;<br />
- LYNX, qui est en fait un navigateur web sous-doté en capacités graphiques, mais qui a la capacité de réduire uen page web à portion congrue. Sauf qu&#8217;il ne le fait pas dans un fichier, du coup il faudra générer un flux. Pour faire clair, la commande sera : &#8220;lynx -dump &lt;URL page locale&gt; <font color="#ff0000">&gt;&gt;</font> <font color="#000000">fichier_destination&#8221;<br />
- EGREP, qui permet</font> d&#8217;isoler les lignes contenant un mot bien précis dans un fichier text. On l&#8217;utilisera sous la forme : &#8220;egrep -i [char] &lt;adresse de la page en mode texte&gt;&#8221;.</p>
<p>Après une version fonctionnelle mais peu subtile en bash bourrin, nous découvrîmes quelques structures et possibilités de BASH qui allaient donner à ce script une classe folle. Mais avant tout cela, nous réorganisâmes nos fichiers contenant des URLs d&#8217;une nouvelle façon. Au lieu d&#8217;un fichier par langue (on aurait oublié de vous dire qu&#8217;on travaille dans le but de vérifier la traduction d&#8217;un terme polysémique via une table de concordances ? Bon, ben, c&#8217;est fait&#8230;), nous aurons un fichier par <strong>sens, </strong>dont le contenu sera rangé de la sorte :<br />
&lt;SENS&gt;<br />
FR<br />
&lt;liste d&#8217;urls en français&gt;<br />
EN<br />
&lt;liste d&#8217;urls en anglais&gt;</p>
<p>Voyons maintenant ce que cela nous apporte.</p>
<p>Tout d&#8217;abord, BASH permet d&#8217;exploiter des procédures (aka &#8220;fonctions&#8221;), ce qui permet de soulager le programmeur qui voudrait relire son script, ou pire : le modifier (a-t-on idée, aussi !). Une fonction BASH s&#8217;écrira sous la forme :</p>
<ul>
<li>fonction()<br />
{</p>
<blockquote><p>&lt;jeu d&#8217;instructions&gt;</p></blockquote>
<p>}</li>
</ul>
<p>Et elle sera appelée directement par son nom : <strong>fonction</strong>, sans plus de fioritures.</p>
<p>Ensuite, la structure <strong>case</strong> permet de remplacer avantageusement une structure du genre if then elsif elsif else, bref, un choix multiple plein d&#8217;indentations qui finissent par mettre le code hors de l&#8217;écran. Un exemple (et là on avait pas encore tout le code) :</p>
<p><a href="http://ksqp.files.wordpress.com/2007/11/2-2b.png" title="2-2b.png"></a></p>
<p style="text-align:center;"><a href="http://ksqp.files.wordpress.com/2007/11/2-2b.png" title="2-2b.png"><img src="http://ksqp.files.wordpress.com/2007/11/2-2b.thumbnail.png?w=450" alt="2-2b.png" /></a></p>
<p>Case, par contre, ça donne un truc du genre :</p>
<ul>
<li><strong>case</strong> variable <strong>in<br />
cas1 ) </strong><font color="#000000">&lt;série d&#8217;instructions&gt;</font><strong> ;;<br />
cas2 ) </strong>&lt;série d&#8217;instructions&gt;<strong> ;;<br />
&#8230;<br />
casN) </strong>&lt;série d&#8217;instructions&gt;<strong> ;;<br />
esac</strong></li>
</ul>
<p>( avec cas1, cas2, casN des chaînes de caractères, ou des valeurs suivant l&#8217;utilisation. Ici, des chaînes de caractères).</p>
<p>Du coup, on a désormais un script BASH écrit avec des appels de fonctions qui n&#8217;utilisent que des variables globales (ça facilite la vie) et une structure principale qui est une boucle imbriquée avec gestion de cas. Et ça donne, en gros, ça :<br />
<a href="http://ksqp.files.wordpress.com/2007/11/projet-bash-final.jpg" title="projet-bash-final.jpg">projet-bash-final.jpg<br />
</a></p>
<p>Les contextes sont encore à implémenter.<br />
Mais il y a pire ! Il s&#8217;est soudain avéré que l&#8217;attribut <em><strong>substr </strong></em>de la commande <strong>expr </strong>n&#8217;était pas implémenté sur certaines versions de BASH. Zut et flûte ! (oui, on se censure un peu, là&#8230;)</p>
<p>Du coup, il nous a fallu trouver une autre solution.<br />
parce que reprogrammer <strong><em>substr  </em></strong>comme si de rien n&#8217;était, c&#8217;est franchement too much.<br />
Et donc, nous nous sommes documentés. Et nous avons découvert&#8230;</p>
<p>Suspense.</p>
<p>Suspense..</p>
<p>Suspense&#8230;</p>
<p>nous avons découvert que la fonction substr était nativement implémentée dans le langage &#8230; PERL.<br />
et comme nous sommes capables de raisonner et tirer des conclusions, nous décidâmes de réécrire le programme en PERL. Logique.<br />
Mais ceci est une autre histoire&#8230;</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ksqp.wordpress.com/6/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ksqp.wordpress.com/6/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ksqp.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ksqp.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ksqp.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ksqp.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ksqp.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ksqp.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ksqp.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ksqp.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ksqp.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ksqp.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ksqp.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ksqp.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ksqp.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ksqp.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ksqp.wordpress.com&amp;blog=2212899&amp;post=6&amp;subd=ksqp&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ksqp.wordpress.com/2007/11/27/le-script-bash-second-coming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8c1083e573428fcd4afafb9afebbcb5?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ksqp</media:title>
		</media:content>

		<media:content url="http://ksqp.files.wordpress.com/2007/11/2-2b.thumbnail.png" medium="image">
			<media:title type="html">2-2b.png</media:title>
		</media:content>
	</item>
		<item>
		<title>Le script BASH &#8211; First Blood</title>
		<link>http://ksqp.wordpress.com/2007/11/27/le-script-bash-first-blood/</link>
		<comments>http://ksqp.wordpress.com/2007/11/27/le-script-bash-first-blood/#comments</comments>
		<pubDate>Tue, 27 Nov 2007 14:11:35 +0000</pubDate>
		<dc:creator>ksqp</dc:creator>
				<category><![CDATA[projet]]></category>
		<category><![CDATA[BASH]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[TAL]]></category>

		<guid isPermaLink="false">http://ksqp.wordpress.com/2007/11/27/le-script-bash-first-blood/</guid>
		<description><![CDATA[&#160; Un script, un script&#8230; C&#8217;est bien joli. Mais pour faire quoi ? On aurait pu faire un script du genre : #!/bin/bash echo &#8220;Hello World!&#8221; Mais on aurait pas été plus avancés. Ici, il s&#8217;agit de réaliser un script prenant en entrée une liste d&#8217;URLs contenues dans un fichier texte et dont les pages [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ksqp.wordpress.com&amp;blog=2212899&amp;post=4&amp;subd=ksqp&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="Normal">&nbsp;</p>
<p style="padding-top:0;" class="paragraph_style"> Un script, un script&#8230; C&#8217;est bien joli. Mais pour faire quoi ?<br />
On aurait pu faire un script du genre :<br />
#!/bin/bash<br />
echo &#8220;Hello World!&#8221;<br />
Mais on aurait pas été plus avancés. Ici, il s&#8217;agit de réaliser un script prenant en entrée une liste d&#8217;URLs contenues dans un fichier texte et dont les pages web contiennent un mot-clé (ici, le mot &#8220;char&#8221;). Ce script rend en sortie une page au format HTML, contenant un tableau, qui lui-même contient des liens vers :<br />
- chaque page listée<br />
- une copie locale de chaque page<br />
- une version texte brut de  chaque page<br />
ET surtout, une ligne de concordance avec le mot &#8220;char&#8221; dans son contexte.</p>
<h4>Première étape : traiter les données en lecture</h4>
<p class="paragraph_style">Dans un premier temps, nous avons étudié les différentes commandes à prendre en compte dans la programmation de ce script. L’idée que nous en avions au départ était de lire le fichier d’urls et de placer les urls dans un tableau en réalisant le lien vers la page web concernée. Le principal problème avec ce script était que le fichier d’input contenait les urls classées par &#8220;sens&#8221;. Donc quand le script lisait le fichier, il fallait qu’il soit capable de différencier une ligne &#8220;url&#8221; d’une ligne de &#8220;sens&#8221; (ou d’une ligne vide).<br />
or, une ligne d&#8217;url commence nécessairement par &#8220;http&#8221;. Donc, il suffisait à notre script de prendre les quatres premiers caractères de chaque ligne, et en fonction de ces caractères :<br />
- de créer une ligne avec un lien si les 4 caractères étaient &#8220;http&#8221;<br />
- de créer une ligne de texte brut dans le cas contraire.</p>
<p>A vue de nez, facile :</p>
<ul>
<li>compteur=1<br />
for ligne in `<strong>cat</strong> &lt;nom de fichier&gt;` {<br />
deb= ‘<strong>expr <em>substr</em></strong> $ligne 1 4’</li>
</ul>
<p class="paragraph_style">On implémente un compteur, puis on lance une boucle qui prend les lignes du fichier une par une (via la commande <strong>cat</strong>) avant de leur faire subir une série d&#8217;opérations. On commence par <strong>expr </strong>avec l&#8217;attribut <em><strong>substr<sup> 1</sup></strong></em>. Cette commande permet de copier les 4 premiers caractères de la variable $ligne (qui, par une habile coïncidence contient le texte de la ligne à traitée) et de les placer dans la variable $deb. On n&#8217;a plus ensuite qu&#8217;à regarder si ces 4 caractères correspondent à la chaîne de caractère “http”.</p>
<ul>
<li>if [ "$deb" == "http" ] then<br />
&lt;création de ligne avec lien hypertexte&gt;<br />
else<br />
&lt;création de ligne texte&gt;<br />
fi</li>
</ul>
<p class="paragraph_style">- Si la condition est vérifiée, alors on crée dans le tableau un lien que l’on appelle &#8220;url$compteur&#8221;, ce qui donne url1 pour le premier lien, url2 pour le second, and so on. Après quoi, on incrémente la variable $compteur de 1<br />
- Si  la condition se vautre, on prend la ligne telle quelle et on la place dans une case du tableau sans incrémenter quoi que ce soit.</p>
<p class="paragraph_style">Voici le résultat obtenu :</p>
<p><a href="http://ksqp.files.wordpress.com/2007/11/script-1.png" title="script-1.png"><img src="http://ksqp.files.wordpress.com/2007/11/script-1.thumbnail.png?w=450" alt="script-1.png" /></a></p>
<p>1 : la commande <strong>expr </strong>et surtout son attribut <strong><em>substr</em></strong> vont nous poser problème dans un futur proche&#8230; Nous en reparlerons.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ksqp.wordpress.com/4/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ksqp.wordpress.com/4/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ksqp.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ksqp.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ksqp.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ksqp.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ksqp.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ksqp.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ksqp.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ksqp.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ksqp.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ksqp.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ksqp.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ksqp.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ksqp.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ksqp.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ksqp.wordpress.com&amp;blog=2212899&amp;post=4&amp;subd=ksqp&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ksqp.wordpress.com/2007/11/27/le-script-bash-first-blood/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8c1083e573428fcd4afafb9afebbcb5?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ksqp</media:title>
		</media:content>

		<media:content url="http://ksqp.files.wordpress.com/2007/11/script-1.thumbnail.png" medium="image">
			<media:title type="html">script-1.png</media:title>
		</media:content>
	</item>
	</channel>
</rss>
