2016-07-30 10 views
0

Wie kann ich eine bedingte Änderung in einem ODS-Dokument vornehmen? Ich habe zwei Spalten. Einer von ihnen speichert einen String und der zweite einen Wert. Ich möchte das Dokument mit einer bestimmten Zeichenfolge suchen, die ich habe, sagen wir "xyz". Wenn dies mit einem der Strings übereinstimmt, die in der ersten Spalte angezeigt werden, möchte ich, dass der Wert 1 von der Zelle in derselben Zeile, aber von der zweiten Spalte abgezogen wird. Die Daten in dem Dokument .ods werden durch die verschiedenen angrenzenden Zellen getrenntBedingte Änderung in ODS-Datei in Bash durchführen

Als Beispiel betrachten die folgenden (so eine Lasche?):

xyz 23
xxy 42
XZZ 76

wenn ich die Zeichenfolge „XXY“ habe, würde ich den bash-Skript wie die .ods Datei so zu aktualisieren, dass sie als so aussehen:

xyz 23
xxy 41
xzz 76

Nun werden die Strings, nach denen ich suche, in einer separaten .txt-Datei gespeichert. Ich möchte über alle Zeichenfolgen in der TXT-Datei iterieren und wiederholt die beschriebene Operation in der ODS-Datei ausführen. Es kann Fälle geben, in denen mehrere Vorkommen derselben Zeichenfolge auftreten. Irgendwelche hilft dabei?

+0

UNIX-Tools arbeiten mit Textdateien, nicht mit Excel-Dateien. Sie können CSV aus Excel exportieren und dann mithilfe von UNIX-Tools die CSV-Datei bearbeiten und das Ergebnis anschließend wieder in Excel importieren. Sie können Excel-Dateien jedoch nicht direkt mit UNIX-Tools bearbeiten. –

Antwort

2

Dies sollte ein Kommentar sein, aber es ist ein bisschen lang

ist auf der Suche nach in einer Textdatei gespeichert werden.

Nein. Eine MS Excel-Datei ist keine Textdatei. Es ist nicht einmal eine Datei, sondern ein eingebettetes Dateisystem, in dem der Inhalt in OLE oder kürzlich als xml Baum eingekapselt ist. Es gibt zwar sowohl OLE- als auch XML-Parser unter Unix (ich nehme an, dass Sie dies unter Linux/Unix/Posix ausführen wollen, da Sie dies mit bash, awk und sed markiert haben), die Ihnen nur Zugriff auf die Daten gibt. Sie benötigen noch ein detailliertes Verständnis des Dateiformats, um Änderungen vornehmen zu können. Während dies in bash möglich ist, wäre es in einer dedizierten Programmiersprache viel einfacher. Einige verfügen über Bibliotheken zur Verarbeitung von Excel-Dateien, unterscheiden sich jedoch in ihrer Unterstützung für Dateiformate. Alternativ könnten Sie es in openoffice laden, indem Sie seine UNO-API verwenden.

+0

Die Zeichenfolgen, nach denen gesucht wird, befinden sich in einer TXT-Datei. Ich möchte diese Zeichenfolgen mit denen vergleichen, die in der Excel-Datei gefunden werden, und die beschriebene Operation ausführen. Ich habe 2 separate Dokumente. Eine mit einer Liste von Strings (Textdatei) und eine andere, die den Strings Größen zuordnet (Excel-Datei) – Sid