<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<header>
<h1></h1>
<nav>
<ul>
<li><a href="/output/README.html">Accueil</a></li>
<li><a href="/output/unix/README.html">UNIX</a></li>
<li><a href="/output/bases/README.html">Bases</a></li>
<li><a href="/output/commandes/README.html">Commandes</a></li>
<li><a href="/output/shell/README.html">Shell</a></li>
<li><a href="/output/sed/README.html">Sed</a></li>
<li><a href="/output/make/README.html">Make</a></li>
</ul>
</nav>
</header>
<div class="content">
<h1 id="travaux-pratiques---sed---unix">Travaux pratiques - Sed - UNIX</h1>
<h2 id="utilisation-simple">Utilisation simple</h2>
<p>Écrivez une commande <code>sed</code> transformant la chaîne « <code>moins</code> » en « <code>plus</code> ».<br />
Appliquez-la à « <code>Vous aurez moins de budget</code> ».</p>
<p><details> <summary>Voir la solution</summary></p>
<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="fu">sed</span> -e <span class="st">'s/moins/plus/g'</span></code></pre></div>
<p></details></p>
<h2 id="utilisation-dun-fichier-de-commandes">Utilisation d'un fichier de commandes</h2>
<p>Écrivez un commande <code>sed</code> transformant toutes les lettres minuscules en leur suivante lexicographique (cas particulier : <code>z</code> se transforme en <code>!</code>).<br />
Rappel : vous pouvez utiliser un fichier pour rassembler plusieurs commandes <code>sed</code>.</p>
<p><details> <summary>Voir la solution</summary></p>
<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="fu">sed</span> -f decalage.sed</code></pre></div>
<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="co"># fichier "decalage.sed"</span>
<span class="ex">s/z</span>/!<span class="ex">/g</span>
<span class="ex">s/y/z/g</span>
<span class="ex">s/x/y/g</span>
<span class="ex">s/w/x/g</span>
<span class="ex">s/v/w/g</span>
<span class="ex">s/u/v/g</span>
<span class="ex">s/t/u/g</span>
<span class="ex">s/s/t/g</span>
<span class="ex">s/r/s/g</span>
<span class="ex">s/q/r/g</span>
<span class="ex">s/p/q/g</span>
<span class="ex">s/o/p/g</span>
<span class="ex">s/n/o/g</span>
<span class="ex">s/m/n/g</span>
<span class="ex">s/l/m/g</span>
<span class="ex">s/k/l/g</span>
<span class="ex">s/j/k/g</span>
<span class="ex">s/i/j/g</span>
<span class="ex">s/h/i/g</span>
<span class="ex">s/g/h/g</span>
<span class="ex">s/f/g/g</span>
<span class="ex">s/e/f/g</span>
<span class="ex">s/d/e/g</span>
<span class="ex">s/c/d/g</span>
<span class="ex">s/b/c/g</span>
<span class="ex">s/a/b/g</span></code></pre></div>
<blockquote>
<p>📗 Cette solution peut sembler étrange, car les substitutions ne se font pas dans l'ordre alphabétique mais dans l'ordre alphabétique inverse.<br />
C'est nécessaire car sinon tous les <code>a</code> se transforment en <code>b</code>, puis tous les <code>b</code> (y compris ceux qui sont nouvellement transformés) en <code>c</code>, <em>etc</em>., pour finir par un texte intégralement composé de lettres <code>a</code>.</p>
</blockquote>
<p></details></p>
<h2 id="substitution-en-début-de-ligne">Substitution en début de ligne</h2>
<p>Écrivez une commande <code>sed</code> qui affiche uniquement le début de chaque ligne du fichier <code>/etc/passwd</code> jusqu'au premier caractère <code>:</code>.</p>
<p><details> <summary>Voir la solution</summary></p>
<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="fu">sed</span> -e <span class="st">'s/^\([^:]*\).*$/\1/'</span> /etc/passwd</code></pre></div>
<blockquote>
<p>📗 On aurait pu aussi utiliser la commande <code>cut</code>.</p>
</blockquote>
<p></details></p>
<h2 id="substitution-dans-toute-la-ligne">Substitution dans toute la ligne</h2>
<p>Écrivez une commande <code>sed</code> qui remplace les couples de guillemets anglais par un couple de guillemets français (<code>Ceci est un "exemple" qui doit "fonctionner".</code> doit donner <code>Ceci est un <<exemple>> qui doit <<fonctionner>>.</code>).</p>
<p><details> <summary>Voir la solution</summary></p>
<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="fu">sed</span> -e <span class="st">'s/"\([^"]*\)"/<<\1>>/g'</span></code></pre></div>
<p></details></p>
<p><a href="./README.html">Précédent</a> - <a href="../make/README.html">Suivant</a></p>
</div>
<footer>
<p>© CNRS 2023</p>
</footer>
</body>
</html>