<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<atom:link href="http://forum.ubuntu-fr.org/extern.php?action=feed&amp;tid=1175791&amp;type=rss" rel="self" type="application/rss+xml" />
		<title><![CDATA[Forum Ubuntu-fr.org / Manipulation odt à la ligne de commande]]></title>
		<link>http://forum.ubuntu-fr.org/viewtopic.php?id=1175791</link>
		<description><![CDATA[Les sujets les plus récents dans Manipulation odt à la ligne de commande.]]></description>
		<lastBuildDate>Fri, 01 Feb 2013 20:29:18 +0000</lastBuildDate>
		<generator>FluxBB</generator>
		<item>
			<title><![CDATA[Réponse à&#160;:  Manipulation odt à la ligne de commande]]></title>
			<link>http://forum.ubuntu-fr.org/viewtopic.php?pid=12428211#p12428211</link>
			<description><![CDATA[<p>Désolé pour le retard, j&#039;étais indisponible.</p><p>Merci de ta réponse nesthib, cela m&#039;a permis de me réorienter vers le concept de &quot;variable&quot; que je ne connaissais pas.</p><p>Le but est justement de modifier les balises de content.xml.</p><p>Voici mon nouveau script :</p><div class="codebox"><pre class="vscroll"><code>#!/bin/bash

#trouver le chemin des fichiers
find -name &quot;*.odt&quot; | while read line; 

#création de la variable (?)
do var[$i]=$line; 
echo &quot;${var[$i]}&quot;; 

#création du répertoire temporaire contenant les fichiers de l&#039;odt
mkdir &quot;${var[$i]}&quot;.rep; 
unzip -o &quot;${var[$i]}&quot; -d &quot;${var[$i]}&quot;.rep/ ; 
cd  &quot;${var[$i]}&quot;.rep/ ; 

#test de remplacement des chaines de caractères
sed -i &#039;s/text:h text:style-name=&quot;Heading_20_4&quot; text:outline-level=&quot;4&quot;/youplaboum/g&#039; content.xml ;

#recompression en .zip (pas besoin d&#039;odt dans l&#039;immédiat)
zip -r &quot;${var[$i]}&quot;.zip * ; 
mv &quot;${var[$i]}&quot;.zip .. ;
cd .. ;

#suppression du répertoire temporaire
rm -r &quot;${var[$i]}&quot;.rep ;

#dernière opération sur la variable (?)
i=$((i+1)); 
done</code></pre></div><p>(J&#039;ai mis un point d&#039;interrogation là où j&#039;ai copié-collé un code sans le comprendre)</p><p>Reste à maîtriser le fonctionnement de sed et des expressions rationnelles, ainsi que la structure du fichier content.xml.</p><p>Je vous explique la manœuvre : ces fichiers odt sont destinés à être convertis en xhtml via le programme <a href="http://writer2latex.sourceforge.net/">writer2latex</a> (en ligne de commande).</p><p>Or la conversion ne se passe pas très bien, on a :</p><p>titre principal&#160; &#160; &#160; &#160; &#160; &lt;p&gt;&#160; &#160; &#160; &#160; &#160; (pas bon)<br />titre 1&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&lt;h1&gt;<br />titre 2&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&lt;h2&gt;<br />titre 3&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&lt;h3&gt;<br />titre 4&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&lt;h4&gt;<br />titre 5&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&lt;h5&gt;</p><p>etc.</p><p>du coup le but est de tout décaler :</p><p>titre principal en titre 1&#160; &#160; &#160; (converti en &lt;h1&gt; par w2l)<br />titre 1&#160; &#160; &#160; &#160; &#160; &#160; en titre 2&#160; &#160; &#160; (converti en &lt;h2&gt; par w2l)<br />titre 2&#160; &#160; &#160; &#160; &#160; &#160; en titre 3&#160; &#160; &#160; (converti en &lt;h3&gt; par w2l)</p><p>etc.</p><p>Je vous tiendrai au courant des suites de mon projet.</p><p>Je suis toujours ouvert aux suggestions.</p>]]></description>
			<author><![CDATA[dummy@example.com (regivanx)]]></author>
			<pubDate>Fri, 01 Feb 2013 20:29:18 +0000</pubDate>
			<guid>http://forum.ubuntu-fr.org/viewtopic.php?pid=12428211#p12428211</guid>
		</item>
		<item>
			<title><![CDATA[Réponse à&#160;:  Manipulation odt à la ligne de commande]]></title>
			<link>http://forum.ubuntu-fr.org/viewtopic.php?pid=12304721#p12304721</link>
			<description><![CDATA[<p>En présumant que tous les fichiers odt sont dans le répertoire courant :</p><div class="codebox"><pre><code>for file in *.odt
do
  unzip &quot;${file}&quot; -d working_dir
  cd working_dir
  sed -i &#039;s/tata/titi/g&#039; content.xml
  zip -r &quot;../${file%.odt}_substitution.odt&quot; .
  cd ..
  rm -r working_dir
done</code></pre></div><p>Attention ! content.xml est un fichier XML, remplacer une chaîne de caractère sans faire attention peut avoir des effets indésirables (ex. suppression des balises).</p>]]></description>
			<author><![CDATA[dummy@example.com (nesthib)]]></author>
			<pubDate>Tue, 22 Jan 2013 17:34:36 +0000</pubDate>
			<guid>http://forum.ubuntu-fr.org/viewtopic.php?pid=12304721#p12304721</guid>
		</item>
		<item>
			<title><![CDATA[Manipulation odt à la ligne de commande]]></title>
			<link>http://forum.ubuntu-fr.org/viewtopic.php?pid=12303631#p12303631</link>
			<description><![CDATA[<p>Bonjour,</p><p>Je cherche à remplacer des chaînes de caractères dans une centaine de fichiers odt.</p><p>J&#039;ai commencé d&#039;écrire une ligne de commande, mais elle ne fonctionne pas encore :</p><div class="codebox"><pre><code>find -name &quot;*.odt&quot; -exec mkdir -p {}.rep \; -exec unzip -o {} -d {}.rep/ \; -exec sed -i &#039;s/tata/titi/g&#039; {}.rep/content.xml \; -exec zip -r {}-corrige.odt . -i ./{}.rep/* \;</code></pre></div><p>Je bloque au niveau de la recompression zip qui archive le <em>dossier</em> &quot;{}.rep&quot; et non <em>l&#039;intérieur du dossier</em>. Résultat : le nouveau fichier odt est illisible.</p><p>D&#039;autre part, j&#039;imagine que ma commande n&#039;est pas optimale et qu&#039;on pourrait faire la même chose avec des tubes.</p><p>Des suggestions ?</p>]]></description>
			<author><![CDATA[dummy@example.com (regivanx)]]></author>
			<pubDate>Tue, 22 Jan 2013 16:15:07 +0000</pubDate>
			<guid>http://forum.ubuntu-fr.org/viewtopic.php?pid=12303631#p12303631</guid>
		</item>
	</channel>
</rss>
