Bash Script xlsx auslesen?
Hey,
ich habe folgendes Problem:
Ich möchte eine xlsx Datei auslesen, die datei ist so aufgebaut:
Unternehmen Methode Domain
Musterunternhemen TLS @beispiel.com
Den grep befehl zum suchen des Bereichs habe ich schon zum Teil.
grep -Po "[a-zA-Z0-9_-]*\.[a-z]{2,4}"
Doch fehlt mir noch die möglichkeit, dass nur die TLS ausgegeben werden.
Die Aufgabe: erstelle ein Bash Script welches nur die Domains ausließt, die die Methode TLS haben und diese dann ausgibt.
Das Notebook an dem ich die Aufgabe bekommen habe, hat kein zugriff aufs Internet. Es virtualiseirt eine Linux Mint worin ich arbeite.
Ich hoffe mir kann jemand helfen, komme gearde echt kein bisschen weiter.
2 Antworten
warum als Bash-Script?
Mit tclsh kann man so etwas viel lesbarer schreiben.
Installiere tcl, schreibe den Code in eine Datei, mache sie ausführbar chmod 755 <Datei-Name> und rufe sie auf
./<Datei-Name> <xlsx-Datei>
Hier der Code ( ohne Komfort )
#!/bin/bash
# \
exec tclsh "$0" "$@"
set fp [open $argv r ] ; # Datei öffnen, Dateiname wurde als Parameter übergeben
while { ![eof $fp] } { set line [gets $fp ] ; # lesen einer Zeile aus der Datei
set list [split $line {} ] ; # jedes Zeichen der Zeile separieren
set chars [llength $list ] ; # Anzahl der Zeichen bestimmen
set firma "" ; # Variable für das erste Wort
set i 0 ; # Index auf Anfang
while { [lindex $list $i ] != " " && $i < $chars } { append firma [lindex $list $i ] ; incr i } ; # alle Zeichen bis zum ersten Leerzeichen in firma
while { [lindex $list $i ] == " " && $i < $chars } { incr i } ; # alle Leerzeichen überspringen
set method [lindex $list $i ] ; # Variable für Methode definieren und mit erstem Zeichen füllen
while { [lindex $list $i ] != " " && $i < $chars } { append method [lindex $list $i ] ; incr i } ; # alle Zeichen bis zum nächsten Leerzeichen in methode
while { [lindex $list $i ] == " " && $i < $chars } { incr i } ; # alle Leerzeichen überspringen
set link [lindex $list $i ] ; # Variable für Link definieren und mit erstem Zeichen füllen
while { [lindex $list $i ] != " " && $i < $chars } { append link [lindex $list $i ] ; incr i } ; # alle Zeichen bis zum Ende nächsten Leerzeichen oder "Ende" in link
# Daten ausgeben , nachfolgend die Domain
puts $link
}
close $fp
so hört sich das ganz anders an.
Ohne etwas zu installieren? Linux ist frei konfigurierbar und die bash gilt zwar als Standard-Shell.
Was aber wenn sich jemand erlaubt hat diese Shell nicht zu installieren?
Was machst du dann, wenn zusätzliches "verboten" ist?
Aktuell schreibe ich das Script auf einem Notebook meines Unterweisers, welches aus Sicherheitsvorkehreungen keine Adminrechte, sowie blockierte USB Ports hat. Es soll jedoch auch später möglich sein, es auf einem Server laufen zu lassen.(Als anfänger das direkt auf dem Server zu schreiben, wäre etwas gefährlicher) (Kurzfassung des gesamten Scripts: Es soll zwei Datein vergleichn und die jeder Datei einzigartigen Daten ausgeben)
das mit Installieren habe ich geschrieben, weil ich Mint nicht kenne.
Bei openSuSE ist tcl ( Aufruf mit tclsh ) bei der Standard-Installation bereits dabei. Vielleicht auch bei Mint.
Keine Admin-Rechte ist schon o.k. . Warum aber keine USB-Ports ?
Hat der die Module (Treiber) entfernt ?
Das sind Firmen Notebooks. Es sollen keine USB Geräte (Außer Maus) angeschlossen werden, da ja Schadware übertragen werden könnte.
Schau mal hier: http://stackoverflow.com/questions/10557360/convert-xlsx-to-csv-in-linux-command-line Allgemein gibt Google für "parse xlsx bash" recht viele Treffer.
Mein Problem ist, dass ich auf diesem Notebook nur User und kein Admin bin. Ich habe keine Berechtigungen um etwas zu installieren. :/
Nun, du kannst auch Gnumerics von hier herunterladen, kompilieren und im Benutzerverzeichnis installieren: http://ftp.gnome.org/pub/gnome/sources/gnumeric/1.12/gnumeric-1.12.32.tar.xz
Ja, das stimmt, ggf. müssen auch Abhängigkeiten kompiliert und im gleichen Benutzerverzeichnis installiert werden. Aber ich denke, so viele ungewöhnliche Abhängigkeiten hat Gnumerics nicht. Habe so schon mal eine neuere Version von Gnuplot installiert, weil die dort vorhandene veraltet und buggy war.
Hey, danke für die Hilfe, doch die Aufgabe wurde mir so von meinem Unterweiser gestellt. Meine Frage ist auch nur ein kleiner ausschnitt des an sich geforderten Programms. Doch ist es irgendwie möglich ohne etwas zu installieren etc. meine Frage zu lösen o: