<?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>jmanteau &#187; commandes</title>
	<atom:link href="http://www.jmanteau.fr/tag/commandes/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jmanteau.fr</link>
	<description>Photos, blog, CV &#38; Co : le "coin de Toile" de Julien Manteau</description>
	<lastBuildDate>Mon, 24 May 2010 12:03:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Quelques commandes de Vi</title>
		<link>http://www.jmanteau.fr/informatique/linux/quelques-commandes-de-vi/</link>
		<comments>http://www.jmanteau.fr/informatique/linux/quelques-commandes-de-vi/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 11:35:48 +0000</pubDate>
		<dc:creator>jmanteau</dc:creator>
				<category><![CDATA[Bazar]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet-Libre]]></category>
		<category><![CDATA[commandes]]></category>
		<category><![CDATA[vi]]></category>

		<guid isPermaLink="false">http://jmanteau.free.fr/blog/?p=10</guid>
		<description><![CDATA[Dans la lignée du post précédent :
Rechercher



/word
Recherche “word” de haut en bas


?word
Recherche “word” de bas en haut


/jo[ha]n
Recherche “john” ou “joan”


/\&#60; the
Recherche “the”, “theatre” ou “then”


/the\&#62;
Recherche “the” ou “breathe”


/\&#60; the\&#62;
Recherche “the”


/\&#60; ….\&#62;
Recherche tous les mots de 4 lettres


/\/
Cherche “fred” mais pas “alfred” ou “frederick”


/fred\&#124;joe
Recherche “fred” ou “joe”


/\&#60;\d\d\d\d\&#62;
Recherche exactement 4 nombres entiers


/^\n\{3}
Trouve 3 lignes vides


:bufdo /searchstr/
Effectue une [...]]]></description>
			<content:encoded><![CDATA[<p>Dans la lignée du post précédent :</p>
<h2 id="rechercher">Rechercher</h2>
<table border="0">
<tbody>
<tr>
<td class="tab_bold">/word</td>
<td>Recherche “word” de haut en bas</td>
</tr>
<tr>
<td class="tab_bold">?word</td>
<td>Recherche “word” de bas en haut</td>
</tr>
<tr>
<td class="tab_bold">/jo[ha]n</td>
<td>Recherche “john” ou “joan”</td>
</tr>
<tr>
<td class="tab_bold">/\&lt; the</td>
<td>Recherche “the”, “theatre” ou “then”</td>
</tr>
<tr>
<td class="tab_bold">/the\&gt;</td>
<td>Recherche “the” ou “breathe”</td>
</tr>
<tr>
<td class="tab_bold">/\&lt; the\&gt;</td>
<td>Recherche “the”</td>
</tr>
<tr>
<td class="tab_bold">/\&lt; ….\&gt;</td>
<td>Recherche tous les mots de 4 lettres</td>
</tr>
<tr>
<td class="tab_bold">/\/</td>
<td>Cherche “fred” mais pas “alfred” ou “frederick”</td>
</tr>
<tr>
<td class="tab_bold">/fred\|joe</td>
<td>Recherche “fred” ou “joe”</td>
</tr>
<tr>
<td class="tab_bold">/\&lt;\d\d\d\d\&gt;</td>
<td>Recherche exactement 4 nombres entiers</td>
</tr>
<tr>
<td class="tab_bold">/^\n\{3}</td>
<td>Trouve 3 lignes vides</td>
</tr>
<tr>
<td class="tab_bold">:bufdo /searchstr/</td>
<td>Effectue une recherche dans tous les fichiers ouverts</td>
</tr>
</tbody>
</table>
<h2 id="remplacer">Remplacer</h2>
<table border="0">
<tbody>
<tr>
<td class="tab_bold">:%s/old/new/g</td>
<td>Remplace toutes les occurences de “old” par “new” dans le fichier</td>
</tr>
<tr>
<td class="tab_bold">:%s/old/new/gw</td>
<td>Remplace toutes les occurences avec confirmation</td>
</tr>
<tr>
<td class="tab_bold">:2,35s/old/new/g</td>
<td>Remplace toutes les occurences entre les lignes 2 et 35</td>
</tr>
<tr>
<td class="tab_bold">:5,$s/old/new/g</td>
<td>Remplace toutes les occurences de la ligne 5 à la fin du fichier</td>
</tr>
<tr>
<td class="tab_bold">:%s/^/hello/g</td>
<td>Remplace le début de chaque ligne par “hello”</td>
</tr>
<tr>
<td class="tab_bold">:%s/$/Harry/g</td>
<td>Remplace la fin de chaque ligne par “Harry”</td>
</tr>
<tr>
<td class="tab_bold">:%s/onward/forward/gi</td>
<td>Remplace “onward” par “forward” sans tenir compte de la casse</td>
</tr>
<tr>
<td class="tab_bold">:%s/ *$//g</td>
<td>Supprime les espaces blancs</td>
</tr>
<tr>
<td class="tab_bold">:g/string/d</td>
<td>Supprime toutes les lignes contenant “string”</td>
</tr>
<tr>
<td class="tab_bold">:v/string/d</td>
<td>Supprime toutes les lignes ne contenant pas “string”</td>
</tr>
<tr>
<td class="tab_bold">:s/Bill/Steve/</td>
<td>Remplace la première occurence de “Bill” par “Steve” dans la ligne courante</td>
</tr>
<tr>
<td class="tab_bold">:s/Bill/Steve/g</td>
<td>Remplace “Bill” par “Steve” dans la ligne courante</td>
</tr>
<tr>
<td class="tab_bold">:%s/Bill/Steve/g</td>
<td>Remplace “Bill” par “Steve” dans tout le fichier</td>
</tr>
<tr>
<td class="tab_bold">:%s/\r//g</td>
<td>Supprime les caractères de retour DOS (^M)</td>
</tr>
<tr>
<td class="tab_bold">:%s/\r/\r/g</td>
<td>Transforme les caractères de retour DOS en retours</td>
</tr>
<tr>
<td class="tab_bold">:%s#&lt;[^&gt;]\+&gt;##g</td>
<td>Supprime les tags HTML en laissant le texte</td>
</tr>
<tr>
<td class="tab_bold">:%s/^\(.*\)\n\1$/\1/</td>
<td>Supprime les lignes en doublon</td>
</tr>
<tr>
<td class="tab_bold">Ctrl+a</td>
<td>Incrémente le nombre sous le curseur</td>
</tr>
<tr>
<td class="tab_bold">Ctrl+x</td>
<td>Decrémente le nombre sous le curseur</td>
</tr>
<tr>
<td class="tab_bold">ggVGg?</td>
<td>Transforme le texte en Rot13</td>
</tr>
</tbody>
</table>
<h2 id="casse">Casse</h2>
<table border="0">
<tbody>
<tr>
<td class="tab_bold">Vu</td>
<td>Transforme la ligne en minuscule</td>
</tr>
<tr>
<td class="tab_bold">VU</td>
<td>Transforme la ligne en majuscule</td>
</tr>
<tr>
<td class="tab_bold">g~~</td>
<td>Inverse la casse de la ligne</td>
</tr>
<tr>
<td class="tab_bold">vEU</td>
<td>Mets le mot en majuscule</td>
</tr>
<tr>
<td class="tab_bold">vE~</td>
<td>Modifie la casse du mot</td>
</tr>
<tr>
<td class="tab_bold">ggguG</td>
<td>Mets tout le texte en majuscule</td>
</tr>
<tr>
<td class="tab_bold">:set ignorecase</td>
<td>Ignore la casse lors des recherches</td>
</tr>
<tr>
<td class="tab_bold">:set smartcase</td>
<td>Ignore la casse lors des recherches sauf si une majuscule est utilisée</td>
</tr>
<tr>
<td class="tab_bold">:%s/.*/\U&amp;</td>
<td>Mets toutes les lettres en majuscule</td>
</tr>
<tr>
<td class="tab_bold">:%s/.*/\L&amp;</td>
<td>Mets toutes les lettres en minuscule</td>
</tr>
<tr>
<td class="tab_bold">:%s/\&lt;./\u&amp;/g</td>
<td>Mets la première lettre de chaque mot en majuscule</td>
</tr>
<tr>
<td class="tab_bold">:%s/\&lt;./\l&amp;/g</td>
<td>Mets la première lettre de chaque mot en minuscule</td>
</tr>
<tr>
<td class="tab_bold">:%s/.*/\u&amp;</td>
<td>Mets la première lettre de chaque ligne ne majuscule</td>
</tr>
<tr>
<td class="tab_bold">:%s/.*/\l&amp;</td>
<td>Mets la première lettre de chaque ligne en minuscule</td>
</tr>
</tbody>
</table>
<h2 id="lecture">Lecture/Ecriture sur d’autres fichiers</h2>
<table border="0">
<tbody>
<tr>
<td class="tab_bold">:1,10 w outfile</td>
<td>Enregistre les lignes 1 à 10 dans <em>outfile</em></td>
</tr>
<tr>
<td class="tab_bold">:1,10 w &gt;&gt; outfile</td>
<td>Ajoute les lignes 1 à 10 dans <em>outfile</em></td>
</tr>
<tr>
<td class="tab_bold">:r infile</td>
<td>Insère le contenu de <em>infile</em></td>
</tr>
<tr>
<td class="tab_bold">:23r infile</td>
<td>Insère le contenu de <em>infile</em> sous la ligne 23</td>
</tr>
</tbody>
</table>
<h2 id="explorateur">Explorateur de fichiers</h2>
<table border="0">
<tbody>
<tr>
<td class="tab_bold">:e .</td>
<td>Ouvre l’explorateur de fichiers intégré</td>
</tr>
<tr>
<td class="tab_bold">:Exp</td>
<td>Ouvre l’explorateur de fichiers intégré</td>
</tr>
<tr>
<td class="tab_bold">:Sex</td>
<td>sépare la fenetre et ouvre l’explorateur de fichiers</td>
</tr>
<tr>
<td class="tab_bold">:browse e</td>
<td>Explorateur graphique</td>
</tr>
<tr>
<td class="tab_bold">:ls</td>
<td>Liste les buffers</td>
</tr>
<tr>
<td class="tab_bold">:cd ..</td>
<td>Se déplacer au dossier parent</td>
</tr>
<tr>
<td class="tab_bold">:args</td>
<td>Liste de files</td>
</tr>
<tr>
<td class="tab_bold">:args *.php</td>
<td>Ouvre une liste de fichiers</td>
</tr>
<tr>
<td class="tab_bold">:grep expression *.php</td>
<td>Retourne une liste de fichiers .php contenant <em>expression</em></td>
</tr>
<tr>
<td class="tab_bold">gf</td>
<td>Ouvre le nom de fichier sous le curseur</td>
</tr>
</tbody>
</table>
<h2 id="unix">Interaction avec Unix</h2>
<table border="0">
<tbody>
<tr>
<td class="tab_bold">:!pwd</td>
<td>Execute la commande unix “pwd” et retourne à vi</td>
</tr>
<tr>
<td class="tab_bold">!!pwd</td>
<td>Execute la commande unix “pwd” et insère la sortie dans le fichier</td>
</tr>
<tr>
<td class="tab_bold">:sh</td>
<td>Quitte temporairement vi</td>
</tr>
<tr>
<td class="tab_bold">$exit</td>
<td>Retourne sous vi</td>
</tr>
</tbody>
</table>
<h2 id="alignement">Alignement</h2>
<table border="0">
<tbody>
<tr>
<td class="tab_bold">:%!fmt</td>
<td>Aligne toutes les lignes</td>
</tr>
<tr>
<td class="tab_bold">!}fmt</td>
<td>Align toutes les lignes à la position courante</td>
</tr>
<tr>
<td class="tab_bold">5!!fmt</td>
<td>Aligne les 5 lignes suivantes</td>
</tr>
</tbody>
</table>
<h2 id="onglets">Onglets</h2>
<table border="0">
<tbody>
<tr>
<td class="tab_bold">:tabnew</td>
<td>Crée un nouvel onglet</td>
</tr>
<tr>
<td class="tab_bold">gt</td>
<td>Affiche l’onglet suivant</td>
</tr>
<tr>
<td class="tab_bold">:tabfirst</td>
<td>Affiche le premier onglet</td>
</tr>
<tr>
<td class="tab_bold">:tablast</td>
<td>Affiche le dernier onglet</td>
</tr>
<tr>
<td class="tab_bold">:tabm n(position)</td>
<td>Réarrange les onglets</td>
</tr>
<tr>
<td class="tab_bold">:tabdo %s/foo/bar/g</td>
<td>Execute une commande dans tous les onglets</td>
</tr>
<tr>
<td class="tab_bold">:tab ball</td>
<td>Mets tous les fichiers ouverts dans des onglets</td>
</tr>
</tbody>
</table>
<h2 id="partage">Partage de fenêtre</h2>
<table border="0">
<tbody>
<tr>
<td class="tab_bold">:e filename</td>
<td>Edite <em>filename</em> dans la fenêtre courante</td>
</tr>
<tr>
<td class="tab_bold">:split filename</td>
<td>Divise la fenêtre et charge <em>filename</em></td>
</tr>
<tr>
<td class="tab_bold">ctrl-w up arrow</td>
<td>Déplace le curseur dans la fenêtre du haut</td>
</tr>
<tr>
<td class="tab_bold">ctrl-w ctrl-w</td>
<td>Déplace le curseur dans la fenêtre suivante</td>
</tr>
<tr>
<td class="tab_bold">ctrl-w_</td>
<td>Maximise la fenêtre courante</td>
</tr>
<tr>
<td class="tab_bold">ctrl-w=</td>
<td>Donne la même taille à toutes les fenêtres</td>
</tr>
<tr>
<td class="tab_bold">10 ctrl-w+</td>
<td>Agrandis la fenêtre courante de 10 lignes</td>
</tr>
<tr>
<td class="tab_bold">:vsplit file</td>
<td>Divise la fenêtre verticalement</td>
</tr>
<tr>
<td class="tab_bold">:sview file</td>
<td>Identique à <strong>:split</strong> mais en mode lecture seule</td>
</tr>
<tr>
<td class="tab_bold">:hide</td>
<td>Ferme la fenêtre courante</td>
</tr>
<tr>
<td class="tab_bold"> <img src='http://www.jmanteau.fr/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> nly</td>
<td>Fais de la fenêtre courante la seule à l’écran</td>
</tr>
<tr>
<td class="tab_bold">:b 2</td>
<td>Ouvre le buffer #2 dans cette fenêtre</td>
</tr>
</tbody>
</table>
<h2 id="completion">Completion</h2>
<table border="0">
<tbody>
<tr>
<td class="tab_bold">Ctrl+n Ctrl+p (en insertion)</td>
<td>Compléter le mot</td>
</tr>
<tr>
<td class="tab_bold">Ctrl+x Ctrl+l</td>
<td>Compléter la ligne</td>
</tr>
<tr>
<td class="tab_bold">:set dictionary=dict</td>
<td>Definit <em>dict</em> comme dictionnaire</td>
</tr>
<tr>
<td class="tab_bold">Ctrl+x Ctrl+k</td>
<td>Compléter en utilisant le dictionnaire</td>
</tr>
</tbody>
</table>
<h2 id="marqueurs">Marqueurs</h2>
<table border="0">
<tbody>
<tr>
<td class="tab_bold">mk</td>
<td>Marque la position actuelle</td>
</tr>
<tr>
<td class="tab_bold">‘k</td>
<td>Déplace le curseur à la marque <em>k</em></td>
</tr>
<tr>
<td class="tab_bold">d’k</td>
<td>Supprime le texte jusqu’à la marque <em>k</em></td>
</tr>
</tbody>
</table>
<h2 id="abbr">Abbréviations</h2>
<table border="0">
<tbody>
<tr>
<td class="tab_bold">:ab mail <a class="linkification-ext" title="Linkification: mailto:mail@provider.org" href="mailto:mail@provider.org">mail@provider.org</a></td>
<td>Définit <em>mail</em> comme abbréviation de <em><a class="linkification-ext" title="Linkification: mailto:mail@provider.org" href="mailto:mail@provider.org">mail@provider.org</a></em></td>
</tr>
</tbody>
</table>
<h2 id="indentation">Indentation</h2>
<table border="0">
<tbody>
<tr>
<td class="tab_bold">:set autoindent</td>
<td>Active l’indentation automatique</td>
</tr>
<tr>
<td class="tab_bold">:set smartindent</td>
<td>Indentation automatique intelligente</td>
</tr>
<tr>
<td class="tab_bold">:set cindent</td>
<td>Règles d’indentation pour programmes en C</td>
</tr>
<tr>
<td class="tab_bold">:set shiftwidth=4</td>
<td>Défini 4 espaces comme taille d’indentation</td>
</tr>
<tr>
<td class="tab_bold">ctrl-t, ctrl-d</td>
<td>Indente/désindente en mode insertion</td>
</tr>
<tr>
<td class="tab_bold">&gt;&gt;</td>
<td>Indente</td>
</tr>
<tr>
<td class="tab_bold">&lt;&lt;</td>
<td>Désindente</td>
</tr>
</tbody>
</table>
<h2 id="coloration">Coloration syntaxique</h2>
<table border="0">
<tbody>
<tr>
<td class="tab_bold">:syntax on</td>
<td>Active la coloration syntaxique</td>
</tr>
<tr>
<td class="tab_bold">:syntax off</td>
<td>Désactive la coloration syntaxique</td>
</tr>
<tr>
<td class="tab_bold">:set syntax=perl</td>
<td>Force la coloration syntaxique</td>
</tr>
</tbody>
</table>
<p><a href="http://www.lyxia.org/blog/linux/les-commandes-de-vim-19">Via</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jmanteau.fr/informatique/linux/quelques-commandes-de-vi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sed: commandes utiles</title>
		<link>http://www.jmanteau.fr/informatique/linux/sed-commandes-utiles/</link>
		<comments>http://www.jmanteau.fr/informatique/linux/sed-commandes-utiles/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 08:21:59 +0000</pubDate>
		<dc:creator>jmanteau</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet-Libre]]></category>
		<category><![CDATA[commandes]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[sed]]></category>

		<guid isPermaLink="false">http://jmanteau.free.fr/blog/?p=9</guid>
		<description><![CDATA[&#171;&#160;Petit&#160;&#187; mémento de commandes sed :
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
SCRIPTS D&#8217;UNE LIGNE UTILES POUR SED (ÉDITEUR DÉFILANT UNIX) Dec. 29, 2005
Compilé par Éric Pement [at]northpark[dot]edu                 version 5.5
Traduit par Gérard Piette gpiette[at]ncf[dot]ca
La version récente de ce fichier (en Anglais) se retrouve ici:
http://sed.sourceforge.net/sed1line.txt
http://www.pement.org/sed/sed1line.txt
Ce fichier aussi [...]]]></description>
			<content:encoded><![CDATA[<p>&laquo;&nbsp;Petit&nbsp;&raquo; mémento de commandes sed :<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
SCRIPTS D&#8217;UNE LIGNE UTILES POUR SED (ÉDITEUR DÉFILANT UNIX) Dec. 29, 2005<br />
Compilé par Éric Pement [at]northpark[dot]edu                 version 5.5<br />
Traduit par Gérard Piette gpiette[at]ncf[dot]ca</p>
<p>La version récente de ce fichier (en Anglais) se retrouve ici:<br />
<a href="http://sed.sourceforge.net/sed1line.txt">http://sed.sourceforge.net/sed1line.txt</a><br />
<a href="http://www.pement.org/sed/sed1line.txt">http://www.pement.org/sed/sed1line.txt</a></p>
<p>Ce fichier aussi disponible dans d&#8217;autres langages:<br />
Chinois     &#8211; <a href="http://sed.sourceforge.net/sed1line_zh-CN.html">http://sed.sourceforge.net/sed1line_zh-CN.html</a><br />
Czech       &#8211; <a href="http://sed.sourceforge.net/sed1line_cz.html">http://sed.sourceforge.net/sed1line_cz.html</a><br />
Hollandais  &#8211; <a href="http://sed.sourceforge.net/sed1line_nl.html">http://sed.sourceforge.net/sed1line_nl.html</a><br />
Français    &#8211; <a href="http://sed.sourceforge.net/sed1line_fr.html">http://sed.sourceforge.net/sed1line_fr.html</a><br />
Allemand    &#8211; <a href="http://sed.sourceforge.net/sed1line_de.html">http://sed.sourceforge.net/sed1line_de.html</a><br />
<!--   Italien     - <a href="http://sed.sourceforge.net/sed1line_it.html" mce_href="http://sed.sourceforge.net/sed1line_it.html">http://sed.sourceforge.net/sed1line_it.html</a> &#8211;><br />
Portugais   &#8211; <a href="http://sed.sourceforge.net/sed1line_pt-BR.html">http://sed.sourceforge.net/sed1line_pt-BR.html</a><br />
<!--   Espagnol    - <a href="http://sed.sourceforge.net/sed1line_es.html" mce_href="http://sed.sourceforge.net/sed1line_es.html">http://sed.sourceforge.net/sed1line_es.html</a> &#8211;></p>
<p>ESPACEMENT DE FICHIER:</p>
<p># espacer en double un fichier<br />
sed G</p>
<p># espacer en double un fichier qui a déjà des lignes vides.<br />
# Le fichier de sortie n&#8217;aura jamais plus qu&#8217;une ligne vide<br />
# entre les lignes de texte.<br />
sed &#8216;G;G&#8217;</p>
<p># défaire le double-espacement (assumons les lignes paires comme<br />
# étant toujours vides)<br />
sed &#8216;n;d&#8217;</p>
<p># espacer en triple un fichier<br />
sed &#8216;G;G&#8217;</p>
<p># insérer une ligne vide au-dessus de chaque ligne qui contient &laquo;&nbsp;regex&nbsp;&raquo;<br />
sed &#8216;/regex/{x;p;x;}&#8217;</p>
<p># insérer une ligne vide sous chaque ligne qui contient l&#8217;expression<br />
# régulière &laquo;&nbsp;regex&nbsp;&raquo;<br />
sed &#8216;/regex/G&#8217;</p>
<p># insérer une ligne vide au-dessus et au-dessous de chaque ligne qui<br />
# contient &laquo;&nbsp;regex&nbsp;&raquo;<br />
sed &#8216;/regex/{x;p;x;G;}&#8217;</p>
<p>NUMÉROTATION:</p>
<p># numéroter chaque ligne du fichier (appuyé simplement à gauche).<br />
# L&#8217;utilisation d&#8217;une tabulation (voir la note sur &#8216;\t&#8217; à la fin<br />
# de ce texte) au lieu d&#8217;un espace préservera les marges.<br />
sed = nomdefichier | sed &#8216;N;s/\n/\t/&#8217;</p>
<p># numéroter chaque ligne d&#8217;un fichier (numéro à gauche, appuyé à droite)<br />
sed = nomdefichier | sed &#8216;N; s/^/     /; s/ *\(.\{6,\}\)\n/\1  /&#8217;</p>
<p># numéroter chaque ligne d&#8217;un fichier, mais afficher le numéro de ligne<br />
# seulement si la ligne n&#8217;est pas vide.<br />
sed &#8216;/./=&#8217; nomdefichier | sed &#8216;/./N; s/\n/ /&#8217;</p>
<p># compter les lignes (émulation de &laquo;&nbsp;wc -l&nbsp;&raquo;)<br />
sed -n &#8216;$=&#8217;</p>
<p>CONVERSION de TEXTE et SUBSTITUTION:</p>
<p># ENVIRONEMENT UNIX:  conversion des retour de chariot (CR/LF) au format Unix.<br />
sed &#8217;s/.$//&#8217;               # assume que toutes les lignes se terminent avec CR/LF<br />
sed &#8217;s/^M$//&#8217;              # sous bash/tcsh, enfoncer Ctrl-V puis Ctrl-M<br />
sed &#8217;s/\x0D$//&#8217;            # fonctionne sous  ssed, gsed 3.02.80 ou plus récent</p>
<p># ENVIRONEMENT UNIX:  conversion des retour de chariot UNIX (LF) au format DOS.<br />
sed &laquo;&nbsp;s/$/`echo -e \\\r`/&nbsp;&raquo;            # ligne de commande sous ksh<br />
sed &#8217;s/$&#8217;&nbsp;&raquo;/`echo \\\r`/&nbsp;&raquo;             # ligne de commande sous bash<br />
sed &laquo;&nbsp;s/$/`echo \\\r`/&nbsp;&raquo;               # ligne de commande sous zsh<br />
sed &#8217;s/$/\r/&#8217;                        # gsed 3.02.80 ou plus haut</p>
<p># ENVIRONMENT DOS: convertir les retour de chariot Unix  (LF) au format DOS.<br />
sed &laquo;&nbsp;s/$//&nbsp;&raquo;                          # méthode 1<br />
sed -n p                             # méthode 2</p>
<p># ENVIRONMENT DOS: convertir les retour de chariot DOS (CR/LF) au format Unix.<br />
# Peut seulement être utilisé avec UnxUtils sed, version 4.0.7 ou plus récente.<br />
# La version UnxUtils  peut être utilisée avec le modificateur &laquo;&nbsp;&#8211;text&nbsp;&raquo;<br />
# qui apparaît lorsque vous utiliser le modificateur &laquo;&nbsp;&#8211;help&nbsp;&raquo;. Sinon,<br />
# la conversion des retours de chariot DOS vers la version UNIX ne peut<br />
# se faire avec SED dans un environnement DOS.  Utiliser &#8216;tr&#8217; au lieu.<br />
sed &laquo;&nbsp;s/\r//&nbsp;&raquo; infile &gt;outfile         # UnxUtils sed v4.0.7 ou plus récent<br />
tr -d \r &lt;infile &gt;outfile            # GNU tr version 1.22 ou plus récent</p>
<p># éliminer tout espace blanc (espaces, tabulations) à la gauche<br />
# de chaque ligne, et appuyer le résultat à la marge gauche<br />
sed &#8217;s/^[ \t]*//&#8217;                    # voir note au sujet de &#8216;\t&#8217; à la fin de ce fichier</p>
<p># éliminer tout espace blanc (espaces, tabulations) à la fin de chaque ligne<br />
sed &#8217;s/[ \t]*$//&#8217;                    # voir note au sujet de &#8216;\t&#8217; à la fin de ce fichier</p>
<p># éliminer tout espace blanc des deux bouts de chaque ligne<br />
sed &#8217;s/^[ \t]*//;s/[ \t]*$//&#8217;</p>
<p># insérer 5 espaces au début de chaque ligne (décalage de page vers la droite)<br />
sed &#8217;s/^/     /&#8217;</p>
<p># aligner tout le texte à la droite sur la 79e colonne<br />
sed -e :a -e &#8217;s/^.\{1,78\}$/ &amp;/;ta&#8217;  # mettre à 78 plus un espace</p>
<p># centrer tout le texte sur le centre de la 79e colonne. Dans la première<br />
# méthode, tout espace au début de la ligne est significatif, et<br />
# des espaces sont ajoutés à la fin de la ligne.  Dans la deuxième<br />
# méthode, les espaces précédant les lignes sont ignorés pendant<br />
# le processus de centrage, et aucun espace n&#8217;est ajouté à la fin des lignes.<br />
sed  -e :a -e &#8217;s/^.\{1,77\}$/ &amp; /;ta&#8217;                     # méthode 1<br />
sed  -e :a -e &#8217;s/^.\{1,77\}$/ &amp;/;ta&#8217; -e &#8217;s/\( *\)\1/\1/&#8217;  # méthode 2</p>
<p># substituer (trouver et remplacer) &laquo;&nbsp;foo&nbsp;&raquo; avec &laquo;&nbsp;bar&nbsp;&raquo; sur chaque ligne<br />
sed &#8217;s/foo/bar/&#8217;             # replacer seulement la première instance de la ligne<br />
sed &#8217;s/foo/bar/4&#8242;            # replacer seulement la quatrième instance de la ligne<br />
sed &#8217;s/foo/bar/g&#8217;            # replacer toutes les instances de la ligne<br />
sed &#8217;s/\(.*\)foo\(.*foo\)/\1bar\2/&#8217; # replacer l&#8217;avant-dernier cas<br />
sed &#8217;s/\(.*\)foo/\1bar/&#8217;            # replacer seulement le dernier cas</p>
<p># substituer  &laquo;&nbsp;foo&nbsp;&raquo; par &laquo;&nbsp;bar&nbsp;&raquo; SEULEMENT pour les lignes contenant &laquo;&nbsp;baz&nbsp;&raquo;<br />
sed &#8216;/baz/s/foo/bar/g&#8217;</p>
<p># substituer  &laquo;&nbsp;foo&nbsp;&raquo; par &laquo;&nbsp;bar&nbsp;&raquo; A L&#8217;EXCEPTION des lignes contenant &laquo;&nbsp;baz&nbsp;&raquo;<br />
sed &#8216;/baz/!s/foo/bar/g&#8217;</p>
<p># substituer &laquo;&nbsp;scarlet&nbsp;&raquo; ou &laquo;&nbsp;ruby&nbsp;&raquo; ou &laquo;&nbsp;puce&nbsp;&raquo; par &laquo;&nbsp;red&nbsp;&raquo;<br />
sed &#8217;s/scarlet/red/g;s/ruby/red/g;s/puce/red/g&#8217;   # la plupart des seds<br />
gsed &#8217;s/scarlet\|ruby\|puce/red/g&#8217;                # GNU sed seulement</p>
<p># reverser l&#8217;ordre des lignes (émulation de &laquo;&nbsp;tac&nbsp;&raquo;)<br />
# bug/boni dans HHsed v1.5 cause l&#8217;élimination des lignes vides<br />
sed &#8216;1!G;h;$!d&#8217;               # méthode 1<br />
sed -n &#8216;1!G;h;$p&#8217;             # méthode 2</p>
<p># renverse l&#8217;ordre de chaque caractère sur une ligne (émulation de &laquo;&nbsp;rev&nbsp;&raquo;)<br />
sed &#8216;/\n/!G;s/\(.\)\(.*\n\)/&amp;\2\1/;//D;s/.//&#8217;</p>
<p># joindre des paires de lignes ensemble côte-à-côte (émulation de &laquo;&nbsp;paste&nbsp;&raquo;)<br />
sed &#8216;$!N;s/\n/ /&#8217;</p>
<p># si une ligne se termine par une barre oblique inversée,<br />
# joindre la ligne suivante à la présente<br />
sed -e :a -e &#8216;/\\$/N; s/\\\n//; ta&#8217;</p>
<p># si une ligne débute par le symbole égalité, l&#8217;ajouter à la précédente<br />
# et remplacer le symbole &laquo;&nbsp;=&nbsp;&raquo; par un espace simple<br />
sed -e :a -e &#8216;$!N;s/\n=/ /;ta&#8217; -e &#8216;P;D&#8217;</p>
<p># insérer des virgules aux chaînes numériques, changeant &laquo;&nbsp;1234567&#8243; en<br />
# &laquo;&nbsp;1,234,567&#8243;<br />
gsed &#8216;:a;s/\B[0-9]\{3\}\&gt;/,&amp;/;ta&#8217;                     # GNU sed<br />
sed -e :a -e &#8217;s/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta&#8217;  # autres seds</p>
<p># décimaux et signes négatifs (GNU sed)<br />
gsed -r &#8216;:a;s/(^|[^0-9.])([0-9]+)([0-9]{3})/\1\2,\3/g;ta&#8217;</p>
<p># ajouter une ligne blanche à chaque cinq lignes (après lignes  5, 10, 15, 20, etc.)<br />
gsed &#8216;0~5G&#8217;                  # GNU sed seulement<br />
sed &#8216;n;n;n;n;G;&#8217;             # autres seds</p>
<p>IMPRIMER D&#8217;UNE FACON SÉLECTIVES CERTAINES LIGNES:</p>
<p># imprimer les dix premières lignes d&#8217;un fichier (émulation de &laquo;&nbsp;head&nbsp;&raquo;)<br />
sed 10q</p>
<p># imprimer la première ligne d&#8217;un fichier (émulation &laquo;&nbsp;head -1&#8243;)<br />
sed q</p>
<p># imprimer les dernières dix lignes d&#8217;un fichier (émulation &laquo;&nbsp;tail&nbsp;&raquo;)<br />
sed -e :a -e &#8216;$q;N;11,$D;ba&#8217;</p>
<p># imprimer les dernières deux lignes d&#8217;un fichier (émulation &laquo;&nbsp;tail -2&#8243;)<br />
sed &#8216;$!N;$!D&#8217;</p>
<p># imprimer la dernière ligne d&#8217;un fichier (émulation &laquo;&nbsp;tail -1&#8243;)<br />
sed &#8216;$!d&#8217;                    # méthode 1<br />
sed -n &#8216;$p&#8217;                  # méthode 2</p>
<p># imprimer l&#8217;avant-dernière ligne d&#8217;un fichier<br />
sed -e &#8216;$!{h;d;}&#8217; -e x              # pour fichiers d&#8217;une ligne , imprimer une ligne vide<br />
sed -e &#8216;1{$q;}&#8217; -e &#8216;$!{h;d;}&#8217; -e x  # pour fichiers d&#8217;une ligne , imprimer la ligne<br />
sed -e &#8216;1{$d;}&#8217; -e &#8216;$!{h;d;}&#8217; -e x  # pour fichiers d&#8217;une ligne , ne rien imprimer</p>
<p># imprimer seulement les lignes coïncidant avec l&#8217;expression régulière regexp<br />
# (émulation &laquo;&nbsp;grep&nbsp;&raquo;)<br />
sed -n &#8216;/regexp/p&#8217;           # méthode 1<br />
sed &#8216;/regexp/!d&#8217;             # méthode 2</p>
<p># imprimer seulement les lignes NE coïncidant PAS avec l&#8217;expression régulière regexp<br />
# (émulation &laquo;&nbsp;grep -v&nbsp;&raquo;)<br />
sed -n &#8216;/regexp/!p&#8217;          # méthode 1, corresponds avec méthode ci-haut<br />
sed &#8216;/regexp/d&#8217;              # méthode 2, syntaxe plus simple</p>
<p># imprimer la ligne précédant celle qui coïncide avec regexp,<br />
# mais pas la ligne coïncidant avec regexp<br />
sed -n &#8216;/regexp/{g;1!p;};h&#8217;</p>
<p># imprime la ligne suivant celle qui coïncide avec regexp,<br />
# mais pas la ligne coïncidant avec regexp<br />
sed -n &#8216;/regexp/{n;p;}&#8217;</p>
<p># imprime une ligne de contexte avant et après regexp, avec numérotation<br />
# de lignes indiquant l&#8217;endroit de coïncidence avec regexp (similaire<br />
# à &laquo;&nbsp;grep -A1 -B1&#8243;)<br />
sed -n -e &#8216;/regexp/{=;x;1!p;g;$!N;p;D;}&#8217; -e h</p>
<p># grep pour AAA et BBB et CCC (peu importe l&#8217;ordre)<br />
sed &#8216;/AAA/!d; /BBB/!d; /CCC/!d&#8217;</p>
<p># grep pour AAA et BBB et CCC (dans cet ordre)<br />
sed &#8216;/AAA.*BBB.*CCC/!d&#8217;</p>
<p># grep pour AAA ou BBB ou CCC (émulation &laquo;&nbsp;egrep&nbsp;&raquo;)<br />
sed -e &#8216;/AAA/b&#8217; -e &#8216;/BBB/b&#8217; -e &#8216;/CCC/b&#8217; -e d    # la plupart des seds<br />
gsed &#8216;/AAA\|BBB\|CCC/!d&#8217;                        # GNU sed seulement</p>
<p># imprime paragraphe si il contient AAA (paragraphes séparés par des lignes vides)<br />
# HHsed v1.5 veuillez insérer un  &#8216;G;&#8217; après &#8216;x;&#8217; dans les trois commandes ci-bas<br />
sed -e &#8216;/./{H;$!d;}&#8217; -e &#8216;x;/AAA/!d;&#8217;</p>
<p># imprime le paragraphe s&#8217;il contient AAA et BBB et CCC (peu importe l&#8217;ordre)<br />
sed -e &#8216;/./{H;$!d;}&#8217; -e &#8216;x;/AAA/!d;/BBB/!d;/CCC/!d&#8217;</p>
<p># imprime le paragraphe s&#8217;il contient AAA ou BBB ou CCC<br />
sed -e &#8216;/./{H;$!d;}&#8217; -e &#8216;x;/AAA/b&#8217; -e &#8216;/BBB/b&#8217; -e &#8216;/CCC/b&#8217; -e d<br />
gsed &#8216;/./{H;$!d;};x;/AAA\|BBB\|CCC/b;d&#8217;         # GNU sed seulement</p>
<p># imprime seulement les lignes longues de 65 caractères ou plus<br />
sed -n &#8216;/^.\{65\}/p&#8217;</p>
<p># imprime seulement les lignes longues de moins de 65 caractères<br />
sed -n &#8216;/^.\{65\}/!p&#8217;        # méthode 1, correspond à ci-haut<br />
sed &#8216;/^.\{65\}/d&#8217;            # méthode 2, syntaxe plus simple</p>
<p># imprime la partie du fichier depuis la coïncidence à l&#8217;expression<br />
# régulière, jusqu&#8217;à la fin du fichier<br />
sed -n &#8216;/regexp/,$p&#8217;</p>
<p># imprime la partie du fichier incluse par le numéros de ligne 8-12 inclusivement<br />
sed -n &#8216;8,12p&#8217;               # méthode 1<br />
sed &#8216;8,12!d&#8217;                 # méthode 2</p>
<p># imprime la ligne numéro 52<br />
sed -n &#8216;52p&#8217;                 # méthode 1<br />
sed &#8216;52!d&#8217;                   # méthode 2<br />
sed &#8216;52q;d&#8217;                  # méthode 3, très efficace sur de gros fichiers</p>
<p># commençant avec la troisième ligne, imprimer chaque septième ligne<br />
gsed -n &#8216;3~7p&#8217;               # GNU sed seulement<br />
sed -n &#8216;3,${p;n;n;n;n;n;n;}&#8217; # autres seds</p>
<p># imprime la partie du fichier contenue entre deux expression régulières<br />
# incluant celles contenant les expressions régulières<br />
sed -n &#8216;/Iowa/,/Montana/p&#8217;             # respecte les hauts de casse</p>
<p>ÉCRASEMENT SÉLECTIF DE CERTAINES LIGNES:</p>
<p># imprime tout le fichier SAUF la section coïncidant avec deux<br />
# expressions régulières<br />
sed &#8216;/Iowa/,/Montana/d&#8217;</p>
<p># élimine les lignes consécutives identiques d&#8217;un fichier (émulation &laquo;&nbsp;uniq&nbsp;&raquo;).<br />
# La première ligne d&#8217;un ensemble de lignes identiques consécutives<br />
# est retenue, les autres éliminées<br />
sed &#8216;$!N; /^\(.*\)\n\1$/!P; D&#8217;</p>
<p># élimine les lignes en duplicata, non-consécutives, d&#8217;un fichier.<br />
# Prenez garde de ne pas déborder les limites de la mémoire tampon<br />
# sinon veuillez utiliser le GNU sed.<br />
sed -n &#8216;G; s/\n/&amp;&amp;/; /^\([ -~]*\n\).*\n\1/d; s/\n//; h; P&#8217;</p>
<p># éliminer toutes les linges sauf celles en duplicata (émulation &laquo;&nbsp;uniq -d&nbsp;&raquo;).<br />
sed &#8216;$!N; s/^\(.*\)\n\1$/\1/; t; D&#8217;</p>
<p># éliminer les dix première lignes d&#8217;un fichier<br />
sed &#8216;1,10d&#8217;</p>
<p># écraser la dernière ligne d&#8217;un fichier<br />
sed &#8216;$d&#8217;</p>
<p># écraser les deux dernières lignes d&#8217;un fichier<br />
sed &#8216;N;$!P;$!D;$d&#8217;</p>
<p># écraser les dix dernières lignes d&#8217;un fichier<br />
sed -e :a -e &#8216;$d;N;2,10ba&#8217; -e &#8216;P;D&#8217;   # méthode 1<br />
sed -n -e :a -e &#8216;1,10!{P;N;D;};N;ba&#8217;  # méthode 2</p>
<p># écraser chaque huitième ligne<br />
gsed &#8216;0~8d&#8217;                           # GNU sed seulement<br />
sed &#8216;n;n;n;n;n;n;n;d;&#8217;                # autres seds</p>
<p># écraser les lignes coïncidant avec un patron<br />
sed &#8216;/patron/d&#8217;</p>
<p># écraser TOUTES les lignes vides d&#8217;un fichier (émulation  &laquo;&nbsp;grep &#8216;.&#8217; &laquo;&nbsp;)<br />
sed &#8216;/^$/d&#8217;                           # méthode 1<br />
sed &#8216;/./!d&#8217;                           # méthode 2</p>
<p># écraser toutes les lignes vides consécutives (sauf la première);<br />
# aussi écrase toutes les lignes vides du début et de la fin d&#8217;un<br />
# fichier (émulation &laquo;&nbsp;cat -s&nbsp;&raquo;)<br />
sed &#8216;/./,/^$/!d&#8217;          # méthode 1, retient 0 ligne vide au début, 1 à la fin<br />
sed &#8216;/^$/N;/\n$/D&#8217;        # méthode 2, permet  1 ligne vide au début, 0  à la fin</p>
<p># écraser toutes lignes vides CONSÉCUTIVES d&#8217;un fichier, sauf les deux premières:<br />
sed &#8216;/^$/N;/\n$/N;//D&#8217;</p>
<p># écraser toutes les lignes vides au début d&#8217;un fichier<br />
sed &#8216;/./,$!d&#8217;</p>
<p># écraser toutes les lignes vides de la fin d&#8217;un fichier<br />
sed -e :a -e &#8216;/^\n*$/{$d;N;ba&#8217; -e &#8216;}&#8217;  # fonctionne sur tous les seds<br />
sed -e :a -e &#8216;/^\n*$/N;/\n$/ba&#8217;        # ibid, sauf  pour gsed 3.02.*</p>
<p># écrase la dernière ligne de chaque paragraphe<br />
sed -n &#8216;/^$/{p;h;};/./{x;/./p;}&#8217;</p>
<p>APPLICATIONS SPÉCIALES:</p>
<p># éliminer les sur-frappes nerf (char, retour) des pages man. La commande<br />
# &#8216;echo&#8217;  peut nécessiter le modificateur -e si vous utilisez Unix System V<br />
# ou du shell bash.<br />
sed &laquo;&nbsp;s/.`echo \\\b`//g&nbsp;&raquo;    # double guillemets requis dans l&#8217;environnement Unix<br />
sed &#8217;s/.^H//g&#8217;             # sous bash/tcsh, enfoncer Ctrl-V et ensuite Ctrl-H<br />
sed &#8217;s/.\x08//g&#8217;           # expression hexadécimale pour sed 1.5, GNU sed, ssed</p>
<p># obtenir l&#8217;entête des messages Usenet/courriel<br />
sed &#8216;/^$/q&#8217;                # élimine tout ce qui suit la première ligne vide</p>
<p># obtenir le corps   des messages Usenet/courriel<br />
sed &#8216;1,/^$/d&#8217;              # élimine tout ce qui précède la première ligne vide</p>
<p># obtenir l&#8217;entête Sujet, mais élimine la portion initiale &laquo;&nbsp;Subject: &nbsp;&raquo;<br />
sed &#8216;/^Suject: */!d; s///;q&#8217;</p>
<p># obtenir l&#8217;adresse de retour dans l&#8217;entête<br />
sed &#8216;/^Reply-To:/q; /^From:/h; /./d;g;q&#8217;</p>
<p># parcourir et isoler l&#8217;adresse proprement dite. Extirpe l&#8217;adresse courriel<br />
# par elle-même, du script précédent<br />
sed &#8217;s/ *(.*)//; s/&gt;.*//; s/.*[:&lt;] *//&#8217;</p>
<p># ajouter un crochet et espace à chaque ligne (citer un message)<br />
sed &#8217;s/^/&gt; /&#8217;</p>
<p># écraser le crochet et espace précédant chaque ligne (enlever la citation du message)<br />
sed &#8217;s/^&gt; //&#8217;</p>
<p># écraser la plupart des étiquettes HTML (s&#8217;accommode des étiquettes multi-lignes)<br />
sed -e :a -e &#8217;s/&lt;[^&gt;]*&gt;//g;/&lt;/N;//ba&#8217;</p>
<p># extrait les parties uuencodées binaires, éliminant les entêtes<br />
# superflues, de façon à garder seulement la partie uuencodée. Les<br />
# fichiers doivent être passé à sed dans le bon ordre. La version 1<br />
# peut être passée depuis la ligne de commande; la version 2 peut<br />
# faire partie d&#8217;un script de shell Unix. (Modifiée par un script<br />
# originaire de Rahul Dhesi.)</p>
<p>sed &#8216;/^end/,/^begin/d&#8217; file1 file2 &#8230; fileX | uudecode   # vers. 1<br />
sed &#8216;/^end/,/^begin/d&#8217; &laquo;&nbsp;$@&nbsp;&raquo; | uudecode                    # vers. 2</p>
<p># triage des paragraphes d&#8217;un fichier par ordre alphabétique. Les paragraphes<br />
# sont séparés pour des lignes vides.  GNU sed utilise \v comme tabulation<br />
# verticale, ou n&#8217;importe lequel caractère unique peut servir.<br />
sed &#8216;/./{H;d;};x;s/\n/={NL}=/g&#8217; file | sort | sed &#8216;1s/={NL}=//;s/={NL}=/\n/g&#8217;<br />
gsed &#8216;/./{H;d};x;y/\n/\v/&#8217; file | sort | sed &#8216;1s/\v//;y/\v/\n/&#8217;</p>
<p># compresser en zip chaque fichier .TXT individuellement, écrasant<br />
# le fichier source et assignant le nom du fichier compressé .ZIP<br />
# au nom de base du fichier source .TXT (sous DOS: le modificateur<br />
# &laquo;&nbsp;dir /b&nbsp;&raquo; retourne les noms de base des fichiers tout en majuscules)<br />
echo @echo off &gt;zipup.bat<br />
dir /b *.txt | sed &laquo;&nbsp;s/^\(.*\)\.TXT/pkzip -mo \1 \<a class="linkification-ext" title="Linkification: http://1.TXT/" href="http://1.TXT/">1.TXT/</a>&nbsp;&raquo; &gt;&gt;zipup.bat</p>
<p>USAGE TYPIQUE: Sed accepte une ou plusieurs commandes et les applique<br />
toutes, de façon séquentielle, à chacune des lignes d&#8217;entrée. Une fois<br />
que toutes les commandes furent exécutées à la première ligne d&#8217;entrée,<br />
cette ligne est envoyée vers la sortie, une deuxième ligne est lue<br />
comme nouvelle entrée, et le cycle se répète.  Les exemples précédents<br />
assument que l&#8217;entrée provient de l&#8217;entrée standard (ex. la console,<br />
normalement ce serait l&#8217;entrée dans un pipeline). Un ou plusieurs<br />
noms de fichiers peuvent être ajoutés à la ligne de commande si l&#8217;entrée<br />
ne provient pas de l&#8217;entrée standard. La sortie est passée à la<br />
sortie standard (stdout ou l&#8217;écran-témoin). Donc:</p>
<p>cat nomdefichier | sed &#8216;10q&#8217;             # utilise entrée pipeline<br />
sed &#8216;10q&#8217; nomdefichier                   # même chose, en moins du cat inutile<br />
sed &#8216;10q&#8217; nomdefichier &gt; nouveaufichier  # re dirige la sortie vers le disque</p>
<p>Pour des renseignements additionnels sur la syntaxe, incluant<br />
comment fournir les instructions sed à partir d&#8217;un fichier au lieu<br />
de la ligne de commande, veuillez consulter le livre &laquo;&nbsp;SED &amp;<br />
AWK, 2nd Edition,&nbsp;&raquo; par Dale Dougherty et Arnold Robbins (O&#8217;Reilly,<br />
1997; <a href="http://www.ora.com/">http://www.ora.com</a>), &laquo;&nbsp;UNIX Text Processing,&nbsp;&raquo; par Dale Dougherty<br />
and Tim O&#8217;Reilly (Hayden Books, 1987) ou les tutoriels par Mike Arst<br />
distribués dans U-SEDIT2.ZIP (plusieurs sites). Afin d&#8217;exploiter la<br />
pleine puissance de sed, l&#8217;usager doit comprendre les &#8216;expressions<br />
régulières&#8217;. A cette fin, consultez &laquo;&nbsp;Mastering Regular Expressions&nbsp;&raquo;<br />
par Jeffrey Friedl (O&#8217;Reilly, 1997). Le manuel UNIX (&laquo;&nbsp;man&nbsp;&raquo;) contient<br />
des pages qui pourraient être utiles (&laquo;&nbsp;man sed&nbsp;&raquo;, &laquo;&nbsp;man regexp&nbsp;&raquo;, ou la<br />
sous-section sur les expressions régulières (&laquo;&nbsp;man ed&nbsp;&raquo;), quoique les<br />
pages man sont notoires pour leur difficultés. Elles ne furent pas<br />
rédigées pour enseigner l&#8217;usage de sed ou des expressions régulières,<br />
mais comme texte de référence pour ceux qui connaissent déjà<br />
ces outils.</p>
<p>SYNTAXE DE CITATION: Les exemples précédents utilisent les<br />
guillemets simples (&#8216;&#8230;&#8217;) au lieu des guillemets doubles (&laquo;&nbsp;&#8230;&nbsp;&raquo;)<br />
pour encadrer ou citer les commandes d&#8217;édition, puisque sed est<br />
typiquement utilisé sur les systèmes d&#8217;exploitation UNIX.  Les guillemets<br />
simples préviennent le shell UNIX d&#8217;interpréter les symbole dollar ($)<br />
ainsi que les guillemets renversés (`&#8230;`) qui seraient interprétés<br />
par le shell s&#8217;ils seraient encadrés ou cités par les guillemets doubles.<br />
Les usagers du shell &laquo;&nbsp;csh&nbsp;&raquo; et dérivés doivent aussi citer le<br />
point d&#8217;exclamation avec l&#8217;oblique arrière (\!) si l&#8217;on veut que<br />
les exemples ci-haut fonctionnent, même avec à l&#8217;intérieur de<br />
guillemets simples.  Les versions de sed écrites pour DOS<br />
invariablement requièrent des guillemets doubles (&laquo;&nbsp;&#8230;&nbsp;&raquo;) au<br />
lieu  des guillemets simples utilisés pour citer les commandes<br />
d&#8217;édition sed.</p>
<p>L&#8217;USAGE DE &#8216;\t&#8217; DANS LES SCRIPTS SED:</p>
<p>Afin de clarifier la documentation, nous avons utilisé l&#8217;expression<br />
&#8216;\t&#8217; pour indiquer le caractère de tabulation (0&#215;09) dans les scripts.<br />
Cependant, la plupart des versions de sed ne reconnaissent pas<br />
l&#8217;abréviation &#8216;\t&#8217;, donc, lorsque vous écrirez ces directives<br />
à l&#8217;invite de commande, vous devrez enfoncer la clef TAB au lieu de<br />
l&#8217;abréviation.  &#8216;\t&#8217; est supporté comme métacharactère d&#8217;expression<br />
régulière dans awk, perl, et HHsed, sedmod, et GNU sed v3.02.80.</p>
<p>VERSIONS DE SED: Les version de sed diffèrent entre elles, et de<br />
légers écarts de syntaxe se présentent.  En particulier, la plupart<br />
ne reconnaissent pas l&#8217;usage d&#8217;étiquettes (:nom) ou ne permettent<br />
pas les instructions de branchement (b,t) à l&#8217;intérieur des commandes<br />
d&#8217;édition, sauf à la fin de ces commandes.  Nous avons donc utilisé<br />
une syntaxe qui serait portable à la majorité des usagers de divers<br />
sed, bien que les versions les plus populaires du GNU sed permettent<br />
une syntaxe plus élaborée.  Lorsque les lecteurs verront une longue<br />
chaîne de commande telle celle-ci:</p>
<p>sed -e &#8216;/AAA/b&#8217; -e &#8216;/BBB/b&#8217; -e &#8216;/CCC/b&#8217; -e d</p>
<p>ils seront réjouis de savoir que GNU sed leur permettra de réduire<br />
le tout en ceci:</p>
<p>sed &#8216;/AAA/b;/BBB/b;/CCC/b;d&#8217;      # ou bien encore en ceci:<br />
sed &#8216;/AAA\|BBB\|CCC/b;d&#8217;</p>
<p>En plus, se rappeler que bien que certaines versions de sed acceptent<br />
une commande telle &laquo;&nbsp;/one/ s/RE1/RE2/&nbsp;&raquo;,  d&#8217;autres ne permettent pas ceci:<br />
&laquo;&nbsp;/one/! s/RE1/RE2/&nbsp;&raquo;, qui contient un espace avant le &#8217;s&#8217;. Éviter d&#8217;enter<br />
l&#8217;espace lorsque vous entrez la commande.</p>
<p>OPTIMISATION POUR VITESSE D&#8217;EXÉCUTION:<br />
Lorsque vous avez besoin de vitesse pour l&#8217;exécution de vos scripts<br />
(si vos fichiers d&#8217;entrée sont volumineux, ou un processeur lent<br />
ou un disque dur lent) la substitution sera plus rapide si vous<br />
faites un recherche pour la chaîne à être changée avant de faire<br />
la substitution &laquo;&nbsp;s/&#8230;/&#8230;/&nbsp;&raquo;.  Voir:</p>
<p>sed &#8217;s/foo/bar/g&#8217; nomdefichier         # commande normale de substitution<br />
sed &#8216;/foo/ s/foo/bar/g&#8217; nomdefichier   # exécution plus rapide<br />
sed &#8216;/foo/ s//bar/g&#8217; nomdefichier      # raccourci de syntaxe</p>
<p>Si vous devez altérer ou écraser seulement une section d&#8217;un fichier<br />
et que vous voulez seulement une sortie pour une première partie<br />
d&#8217;un fichier quelconque, la commande &laquo;&nbsp;quit&nbsp;&raquo; (q) dans le script<br />
réduira considérablement le temps d&#8217;exécution pour de gros fichiers.<br />
Donc:</p>
<p>sed -n &#8216;45,50p&#8217; nomdefichier           # imprimez les lignes nos. 45-50 d&#8217;un fichier<br />
sed -n &#8216;51q;45,50p&#8217; nomdefichier       # ibid, mais bien plus vite</p>
<p>Si vous avez des scripts additionnels à contribuer, ou si vous trouvez<br />
des erreurs dans ce document, S.V.P. envoyer un courriel au compilateur<br />
du document. Indiquez quelle version de sed vous utilisez, le système<br />
d&#8217;exploitation en usage et pour laquelle votre sed fut compilé, ainsi<br />
que la nature de votre problème.  Afin de se qualifier comme un script<br />
d&#8217;une ligne, la commande doit avoir moins de 65 caractères.  Divers<br />
scripts dans ce fichiers furent rédigés ou contribués par les bonnes<br />
gens suivants:</p>
<p>Al Aab                   # fondateur de la liste &laquo;&nbsp;seders&nbsp;&raquo;<br />
Edgar Allen              # divers<br />
Yiorgos Adamopoulos      # divers<br />
Dale Dougherty           # auteur de &laquo;&nbsp;sed &amp; awk&nbsp;&raquo;<br />
Carlos Duarte            # auteur de &laquo;&nbsp;do it with sed&nbsp;&raquo;<br />
Eric Pement              # auteur de ce document<br />
Ken Pizzini              # auteur de GNU sed v3.02<br />
S.G. Ravenhall           # superbe script de-html<br />
Greg Ubben               # beaucoup de contributions &amp; d&#8217;aide<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jmanteau.fr/informatique/linux/sed-commandes-utiles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
