<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Tabellenzeilen in txt-Datei zusammenfassen]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich hoffe ihr könnt mir mit einem vermutlich relativ simplen Problem weiterhelfen, was mir eine Menge STRG+C / STRG+V Arbeit ersparen würde^^<br />
(vielleicht ist der Weg über Excel auch möglich/leichter)</p>
<p>Ich habe eine Tabelle als .txt-Datei, die z.B. so aussieht:</p>
<pre><code>--------------------------------------- 
|Materialnr.  | Kommentar             | 
--------------------------------------- 
|123.456-78   |$ Kommentar $ Kommentar| 
|123.456-78   |$ Kommentar            | 
|123.456-78   |$ Kommentar $ Kommentar| 
|543.982-44   |$ Kommentar            | 
|543.982-44   |$ Kommentar $ Kommentar| 
|876.543-21   |$ Kommentar            | 
|876.543-21   |$ Kommentar            | 
|876.543-21   |$ Kommentar            | 
---------------------------------------
</code></pre>
<p>Das Problem hierbei ist, dass die Kommentare (inklusive Dollarzeichen $) zur selben Materialnr. alle in einer Zeile hintereinander stehen sollen, sodass jede Materialnr. nur 1-Mal vorkommt. Die überflüssigen, leeren Zeilen sollen dann gelöscht werden, also etwa so:</p>
<pre><code>--------------------------------------------------------------------------- 
|Materialnr.  | Kommentar                                                 | 
--------------------------------------------------------------------------- 
|123.456-78   |$ Kommentar $ Kommentar $ Kommentar $ Kommentar $ Kommentar| 
|543.982-44   |$ Kommentar $ Kommentar $ Kommentar                        | 
|876.543-21   |$ Kommentar $ Kommentar $ Kommentar                        | 
---------------------------------------------------------------------------
</code></pre>
<p>Ich kenne mich leider mit Programmierung nicht aus, aber ich vermute einfach, dass es sich doch um keine wirklich aufwändige Programmierarbeit handeln sollte, den Vorgang automatisch ablaufen zu lassen oder?</p>
<p>Vielleicht ist es ein bisschen viel verlangt (ich kann nur grob einschätzen, wie viel Arbeit es wohl machen dürfte), aber könnte mir jemand bitte einen Programmcode aufschreiben, der die Kommentare inklusive Dollarzeichen bei gleicher Materialnummer in die selbe Zeile (hintereinander mit Leerzeichen) bringt? Wenn die leeren Zeilen (Kommentarspalte) dann auch noch gelöscht würden, wäre das natürlich optimal <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/260662/tabellenzeilen-in-txt-datei-zusammenfassen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 23:44:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/260662.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 08 Feb 2010 10:05:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Tabellenzeilen in txt-Datei zusammenfassen on Mon, 08 Feb 2010 10:05:13 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich hoffe ihr könnt mir mit einem vermutlich relativ simplen Problem weiterhelfen, was mir eine Menge STRG+C / STRG+V Arbeit ersparen würde^^<br />
(vielleicht ist der Weg über Excel auch möglich/leichter)</p>
<p>Ich habe eine Tabelle als .txt-Datei, die z.B. so aussieht:</p>
<pre><code>--------------------------------------- 
|Materialnr.  | Kommentar             | 
--------------------------------------- 
|123.456-78   |$ Kommentar $ Kommentar| 
|123.456-78   |$ Kommentar            | 
|123.456-78   |$ Kommentar $ Kommentar| 
|543.982-44   |$ Kommentar            | 
|543.982-44   |$ Kommentar $ Kommentar| 
|876.543-21   |$ Kommentar            | 
|876.543-21   |$ Kommentar            | 
|876.543-21   |$ Kommentar            | 
---------------------------------------
</code></pre>
<p>Das Problem hierbei ist, dass die Kommentare (inklusive Dollarzeichen $) zur selben Materialnr. alle in einer Zeile hintereinander stehen sollen, sodass jede Materialnr. nur 1-Mal vorkommt. Die überflüssigen, leeren Zeilen sollen dann gelöscht werden, also etwa so:</p>
<pre><code>--------------------------------------------------------------------------- 
|Materialnr.  | Kommentar                                                 | 
--------------------------------------------------------------------------- 
|123.456-78   |$ Kommentar $ Kommentar $ Kommentar $ Kommentar $ Kommentar| 
|543.982-44   |$ Kommentar $ Kommentar $ Kommentar                        | 
|876.543-21   |$ Kommentar $ Kommentar $ Kommentar                        | 
---------------------------------------------------------------------------
</code></pre>
<p>Ich kenne mich leider mit Programmierung nicht aus, aber ich vermute einfach, dass es sich doch um keine wirklich aufwändige Programmierarbeit handeln sollte, den Vorgang automatisch ablaufen zu lassen oder?</p>
<p>Vielleicht ist es ein bisschen viel verlangt (ich kann nur grob einschätzen, wie viel Arbeit es wohl machen dürfte), aber könnte mir jemand bitte einen Programmcode aufschreiben, der die Kommentare inklusive Dollarzeichen bei gleicher Materialnummer in die selbe Zeile (hintereinander mit Leerzeichen) bringt? Wenn die leeren Zeilen (Kommentarspalte) dann auch noch gelöscht würden, wäre das natürlich optimal <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1852297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852297</guid><dc:creator><![CDATA[neuronkl]]></dc:creator><pubDate>Mon, 08 Feb 2010 10:05:13 GMT</pubDate></item><item><title><![CDATA[Reply to Tabellenzeilen in txt-Datei zusammenfassen on Mon, 08 Feb 2010 10:21:08 GMT]]></title><description><![CDATA[<p>C++ ist hier ein bisschen Kanonen auf Spatzen, besonders wenn du keine große Programmiererfahrung hast. Guck dir dafür mal die Sprache 'awk' an, da ist das ein Fünfzeiler. Oder Python, da geht das sicher auch ganz gut.</p>
<p>edit: Das soll nicht heißen, dass das in C++ nicht auch sehr einfach wäre, aber in den genannten Sprachen ist es eben noch einfacher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1852305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852305</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 08 Feb 2010 10:21:08 GMT</pubDate></item><item><title><![CDATA[Reply to Tabellenzeilen in txt-Datei zusammenfassen on Mon, 08 Feb 2010 10:41:01 GMT]]></title><description><![CDATA[<p>Klingt jetzt vielleicht etwas blöd - aber könnte ich diese fünf Zeilen vielleicht bekommen bitte? Wenn ich jetzt erst noch eine Progammiersprache lernen muss, ist das Problem nicht mehr so aktuell, obwohl es eine sehr lange Liste ist und ich das wirklich ungern alles per Hand ändern möchte...</p>
<p>Ich hab auf Verdacht im C++ Unterforum geschrieben - war das nicht die Sprache, bei der ich den Programmcode in eine txt-Datei schreibe und dann nach .bat umbenenne, damit man sie ausführen kann? Bin ein absoluter Laie auf dem Gebiet, darum muss ich so fragen^^</p>
<p>Aber danke schonmal für deinen Tipp trotzdem</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1852322</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852322</guid><dc:creator><![CDATA[neuronkl]]></dc:creator><pubDate>Mon, 08 Feb 2010 10:41:01 GMT</pubDate></item><item><title><![CDATA[Reply to Tabellenzeilen in txt-Datei zusammenfassen on Mon, 08 Feb 2010 11:20:24 GMT]]></title><description><![CDATA[<p>neuronkl schrieb:</p>
<blockquote>
<p>Ich hab auf Verdacht im C++ Unterforum geschrieben - war das nicht die Sprache, bei der ich den Programmcode in eine txt-Datei schreibe und dann nach .bat umbenenne, damit man sie ausführen kann?</p>
</blockquote>
<p>Nein. C++ Code muss compiliert werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1852340</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852340</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 08 Feb 2010 11:20:24 GMT</pubDate></item><item><title><![CDATA[Reply to Tabellenzeilen in txt-Datei zusammenfassen on Mon, 08 Feb 2010 11:29:44 GMT]]></title><description><![CDATA[<p>Mir war langweilig in der Mittagspause. Und ich wollte mal sehen, wie ich das ungefähr in C++ machen würde. Ist natürlich schrecklicher Code, weil ich mir keine Zeit genommen habe, das schön zu machen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;limits&gt;
#include &lt;map&gt;
#include &lt;sstream&gt;

using namespace std;

void strip_spaces(string &amp; str)
{
  // Löscht mehrfache Leerzeichen aus einem String
  stringstream s(str);
  string temp;
  str.clear();
  while(true)
    {
      s &gt;&gt; temp;
      if (!s) break;
      str += string(&quot; &quot;) + temp;
    }
}

int main()
{
  // Ignoriere Header (3 Zeilen):
  cin.ignore(numeric_limits&lt;streamsize&gt;::max(),'\n');
  cin.ignore(numeric_limits&lt;streamsize&gt;::max(),'\n');
  cin.ignore(numeric_limits&lt;streamsize&gt;::max(),'\n');

  // Lese Daten
  map&lt;string, string&gt; inhalt;
  while(true){
    string dummy; 
    string materialnummer;
    string kommentar;
    getline(cin, dummy, '|');  // Leere Spalte am Anfang der Zeile
    getline(cin, materialnummer, '|');
    getline(cin, kommentar, '|');
    if (!materialnummer.size()) break;
    strip_spaces(kommentar);
    inhalt[materialnummer] += kommentar;
  }

  // Suche Länge der Daten zur sauberen Darstellung in Spalten
  unsigned max_mat=string(&quot;Materialnr.&quot;).length(), max_komm=string(&quot; Kommentar&quot;).length();
  for(map&lt;string,string&gt;::iterator i=inhalt.begin(); i!= inhalt.end(); ++i)
    {
      if (i-&gt;first.size()&gt;max_mat) max_mat=i-&gt;first.size();
      if (i-&gt;second.size()&gt;max_komm) max_komm=i-&gt;second.size();
    }

  // Header der Ausgabe:
  cout.width(max_mat+max_komm+3); // 3 Spaltenzeichen
  cout.fill('-');
  cout&lt;&lt;left&lt;&lt;'-'&lt;&lt;endl;
  cout.width(max_mat+1); // 1 Spaltenzeichen
  cout.fill(' ');
  cout&lt;&lt;left&lt;&lt;&quot;|Materialnr.&quot;;
  cout.width(max_komm+1); // 1 Spaltenzeichen
  cout&lt;&lt;left&lt;&lt;&quot;| Kommentar&quot;;
  cout.width(1);
  cout&lt;&lt;'|'&lt;&lt;endl;
  cout.width(max_mat+max_komm+3); // 3 Spaltenzeichen
  cout.fill('-');
  cout&lt;&lt;left&lt;&lt;'-'&lt;&lt;endl;

  // Ausgabe:
  cout.fill(' ');
  for(map&lt;string,string&gt;::iterator i=inhalt.begin(); i!= inhalt.end(); ++i)
    {
      cout.width(1);
      cout&lt;&lt;'|';     
      cout.width(max_mat);
      cout&lt;&lt; i-&gt;first;
      cout.width(1);
      cout&lt;&lt;'|';     
      cout.width(max_komm);
      cout&lt;&lt; i-&gt;second;
      cout.width(1);
      cout&lt;&lt;'|'&lt;&lt;endl;     
    }

  // Tail der Ausgabe
  cout.width(max_mat+max_komm+3); // 3 Spaltenzeichen
  cout.fill('-');
  cout&lt;&lt;left&lt;&lt;'-'&lt;&lt;endl;
}
</code></pre>
<p>Beispielseingabe:</p>
<pre><code>-----------------------------------------
|Materialnr.  | Kommentar               |
-----------------------------------------
|123.456-78   |$ Kommentar1 $ Kommentar9|
|123.456-78   |$ Kommentar2             |
|123.456-78   |$ Kommentar3 $ KommentarA|
|543.982-44   |$ Kommentar4             |
|543.982-44   |$ Kommentar5 $ KommentarB|
|876.543-21   |$ Kommentar6             |
|876.543-21   |$ Kommentar7             |
|876.543-21   |$ Kommentar8             |
-----------------------------------------
</code></pre>
<p>Ausgabe dazu:</p>
<pre><code>---------------------------------------------------------------------------------
|Materialnr.  | Kommentar                                                       |
---------------------------------------------------------------------------------
|123.456-78   | $ Kommentar1 $ Kommentar9 $ Kommentar2 $ Kommentar3 $ KommentarA|
|543.982-44   | $ Kommentar4 $ Kommentar5 $ KommentarB                          |
|876.543-21   | $ Kommentar6 $ Kommentar7 $ Kommentar8                          |
---------------------------------------------------------------------------------
</code></pre>
<p>Benutzung: Das Programm liest einfach von der Standardeingabe. Also einfach diese mittels '&lt;' auf die Datei mit den Daten umlenken. Das Ergebnis geht dann an die Standardausgabe, die man wenn gewünscht wieder mit '&gt;' in eine (andere!) Datei lenken kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1852344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852344</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 08 Feb 2010 11:29:44 GMT</pubDate></item><item><title><![CDATA[Reply to Tabellenzeilen in txt-Datei zusammenfassen on Mon, 08 Feb 2010 12:00:57 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Mir war langweilig in der Mittagspause. Und ich wollte mal sehen, wie ich das ungefähr in C++ machen würde. Ist natürlich schrecklicher Code, weil ich mir keine Zeit genommen habe, das schön zu machen</p>
</blockquote>
<p>Für Quick'n Dirty finde ich den Code ziemlich gut. Darf ich fragen, wie lange du ungefähr gebraucht hast?</p>
<p>Oh, und btw glaube ich nicht, dass er/sie einen C++-Compiler hat <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1852353</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852353</guid><dc:creator><![CDATA[Badestrand_]]></dc:creator><pubDate>Mon, 08 Feb 2010 12:00:57 GMT</pubDate></item><item><title><![CDATA[Reply to Tabellenzeilen in txt-Datei zusammenfassen on Mon, 08 Feb 2010 12:07:56 GMT]]></title><description><![CDATA[<p>Ah, super - danke.</p>
<p>Ich mache mich dann jetzt einmal auf die Suche nach einer Möglichkeit, das Progamm zu kompilieren und werd dann mal ausgiebig testen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1852360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852360</guid><dc:creator><![CDATA[neuronkl]]></dc:creator><pubDate>Mon, 08 Feb 2010 12:07:56 GMT</pubDate></item><item><title><![CDATA[Reply to Tabellenzeilen in txt-Datei zusammenfassen on Mon, 08 Feb 2010 13:13:25 GMT]]></title><description><![CDATA[<p>Badestrand_ schrieb:</p>
<blockquote>
<p>Für Quick'n Dirty finde ich den Code ziemlich gut. Darf ich fragen, wie lange du ungefähr gebraucht hast?</p>
</blockquote>
<p>Ca. 30 Minuten inklusive testen. Ich hatte schon vorher den Plan, dass man für den Kern das Algorithmus am besten eine Map nimmt. Dann habe ich das Programm quasi Zeile für Zeile runtergeschrieben und jeweils nach einem Absatz getestet ob dieser auch das macht, was ich will. Und da fast alles auf Anhieb funktioniert hat, ging es dann auch schnell mit dem Programmieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1852397</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852397</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 08 Feb 2010 13:13:25 GMT</pubDate></item></channel></rss>