Newer
Older
cours-unix-shell / output / sed / tp.html
<!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">&#39;s/moins/plus/g&#39;</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 &quot;decalage.sed&quot;</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">&#39;s/^\([^:]*\).*$/\1/&#39;</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 &quot;exemple&quot; qui doit &quot;fonctionner&quot;.</code> doit donner <code>Ceci est un &lt;&lt;exemple&gt;&gt; qui doit &lt;&lt;fonctionner&gt;&gt;.</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">&#39;s/&quot;\([^&quot;]*\)&quot;/&lt;&lt;\1&gt;&gt;/g&#39;</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>&copy; CNRS 2023</p>
    </footer>
</body>

</html>