Newer
Older
cours-unix-shell / UnixShell_cours2018 / tpSed.fre.html
<html>
  <head>
    
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <link REL="STYLESHEET" TYPE="text/css" TITLE="Style DILIB" HREF="../../dilib.css">
    <style type="text/css">
.chaine                              { background-color: #B0E0FF; color: green; }
.chaine:before                       { content: "«"; }
.chaine:after                        { content: "»"; }
.attention                           { font-style: italic; }
.remarque, .exemple, .remarque_suite { font-size: small; }
.remarque                            { margin-bottom: 2; }
.remarque_suite                      { margin-bottom: 2; margin-top: 0; }
.remarque:before                     { content: "REMARQUE :"; }
.exemple:before                      { content: "Exemple : "; }
.attention:before                    { content: "ATTENTION :"; }
.solution                            { display: none; }
    </style>
    <script type="text/javascript">
      /* nom du fichier contenant le corrig&eacute; &eacute;quivalent &agrave; celui de
         ce fichier */
      var corrige='corrigeSed.fre.html';

      /* Cette fonction est &agrave; adapter aux identifiants de la page */
      function cacherSolutions() {
        if(document.getElementById && document.styleSheets) {
          document.getElementById('passwd').style.display='none';
          document.getElementById('guillemets').style.display='none';
          document.getElementById('fichier').style.display='none';
        }
      }
    </script>
    <script type="text/javascript" src="cacher.js"></script>
    <title>TP sed - UNIX</title>
    <link rel="copyright" href="http://www.inist.fr/"><link rel="author" href="http://dilib.inist.fr/membres.html"><link rel="chapter" href="caracteristiques.fre.html" title="UNIX"><link rel="chapter" href="X.fre.html" title="X Window"><link rel="chapter" href="redirPipes.fre.html" title="Rappels"><link rel="chapter" href="newCommandsUser.fre.html" title="Commandes UNIX"><link rel="chapter" href="shellVars.fre.html" title="Shell"><link rel="chapter" href="sed.fre.html" title="Sed"><link rel="chapter" href="make.fre.html" title="Make"><link rel="index" href="http://dilib.inist.fr/dilib/v04Main/IndexSite/Server/FR.resource.index.html"><link rel="top" title="Accueil de DILIB" href="http://dilib.inist.fr/dilib/v04Main/"><link rel="alternate" title="English version" href="tpSed.eng.html"><link rel="up" href="index.fre.html" title="Tutorial UNIX / Shell">
    <link rel="section" href="sed.fre.html" title="Sed"><link rel="section" href="tpSed.fre.html" title="Travaux Pratiques">
    <link rel="first" href="caracteristiques.fre.html" title="Caract&eacute;ristiques d'UNIX">
    <link rel="previous" href="sed.fre.html" title="Sed">
    <link rel="next" href="make.fre.html" title="Make">
    <link rel="last" href="tpSed.fre.html" title="Travaux Pratiques">
  </head>

  <body onload="cacherSolutions();">
    <h1>TP sed - UNIX</h1>

    <div id="navcontainer">
      <ul id="navlist">
	<li><a href="caracteristiques.fre.html">UNIX</a>
	</li>
	<li><a href="redirPipes.fre.html">Bases</a>
	</li>
	<li><a href="newCommandsUser.fre.html">Commandes</a>
	</li>
	<li><a href="shellVars.fre.html">Shell</a>
	</li>
	<li><a>Sed</a>
	  <ul id="subnavlist">
	    <li><a href="sed.fre.html">Principes</a></li>
	    <li><a href="tpSed.fre.html" id="subcurrent">TP</a></li>
	  </ul>
	</li>
	<li><a href="make.fre.html">Make</a>
	</li>
      </ul>
    </div>
    
    <div class="content">
    <h2>
      Utilisation simple
    </h2>
    <p>
      &Eacute;crivez une commande sed transformant la chaîne
      <span class="chaine">moins</span> en 
      <span class="chaine">plus</span>. Appliquez-la à <code>Vous aurez
      moins de budget</code>.
    </p>
    <script type="text/javascript">
      EcrireBouton('simple');
    </script>
    <div class="solution" id="simple">
      <a href="javascript:Cacher('simple');">Cacher la solution</a>
      <pre>sed -e 's/moins/plus/g'</pre>
    </div>

    <h2>
      Utilisation d'un fichier de commandes
    </h2>
    <p>
      &Eacute;crivez un commande sed transformant toutes les lettres
      minuscules en leur suivante lexicographique (cas
      particulier&nbsp;: <code>z</code> se transforme en
      <code>!</code>). Rappel&nbsp;: vous pouvez utiliser un fichier
      pour rassembler plusieurs commandes sed.
    </p>
    <script type="text/javascript">
      EcrireBouton('fichier');
    </script>
    <div class="solution" id="fichier">
      <a href="javascript:Cacher('fichier');">Cacher la solution</a>
      <pre>sed -f decalage.sed</pre>
      <pre style="font-size: smaller;"><span class="comment"># fichier "decalage.sed"</span>
s/z/!/g
s/y/z/g
s/x/y/g
s/w/x/g
s/v/w/g
s/u/v/g
s/t/u/g
s/s/t/g
s/r/s/g
s/q/r/g
s/p/q/g
s/o/p/g
s/n/o/g
s/m/n/g
s/l/m/g
s/k/l/g
s/j/k/g
s/i/j/g
s/h/i/g
s/g/h/g
s/f/g/g
s/e/f/g
s/d/e/g
s/c/d/g
s/b/c/g
s/a/b/g</pre>
      <p class="remarque">
	Cette solution peut sembler &eacute;trange, car les substitutions ne
	se font pas dans l'ordre alphab&eacute;tique mais dans l'ordre
	alphab&eacute;tique inverse. C'est n&eacute;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&eacute;s) en <code>c</code>, etc., pour finir par un texte
	int&eacute;gralement compos&eacute; de lettres <code>a</code>.
      </p>
    </div>

    <h2>
      Substitution en d&eacute;but de ligne
    </h2>
    <p>
      &Eacute;crivez une commande sed qui affiche uniquement le d&eacute;but de
      chaque ligne du fichier <code>/etc/passwd</code> jusqu'au
      premier caract&egrave;re <code>:</code>.
    </p>
    <script type="text/javascript">
      EcrireBouton('passwd');
    </script>
    <div class="solution" id="passwd">
      <a href="javascript:Cacher('passwd');">Cacher la solution</a>
      <pre>sed -e 's/^\([^:]*\).*$/\1/' /etc/passwd</pre>
      <p class="remarque">
	On aurait pu aussi utiliser la commande <code>cut</code>.
      </p>
    </div>

    <h2>
      Substitution dans toute la ligne
    </h2>
    <p>
      &Eacute;crivez une commande sed qui remplace les couples de guillemets
      anglais par un couple de guillemets fran&ccedil;ais (<code>Ceci est un
      "exemple" qui doit "fonctionner".</code> doit donner <code>Ceci
      est un &lt;&lt;exemple&gt;&gt; qui doit
      &lt;&lt;fonctionner&gt;&gt;.</code>).
    </p>
    <script type="text/javascript">
      EcrireBouton('guillemets');
    </script>
    <div class="solution" id="guillemets">
      <a href="javascript:Cacher('guillemets');">Cacher la solution</a>
      <pre>sed -e 's/"\([^"]*\)"/&lt;&lt;\1>>/g'</pre>
    </div>
    </div>
    <hr>
    <address><a href="mailto:philippe.houdry@inist.fr">Philippe.Houdry@inist.fr</a></address>
  </body>
</html>