#!/usr/bin/ksh # ==================================================================== # # Eine oft anzutreffende Variante beim Zusammenspiel von Windows und Linux # sind Dateinamen, die von Windows mit dem Zeichensatz ISO-8859-1 oder # ISO-8859-15 kodiert worden sind, von Linux aber als UTF-8 erwartet werden. # # Bei der Auflistung solch falsch kodierter Dateinamen erhält man dann # z.B. folgende Namen: Brief f�r Foobar.doc. # convmv -f iso-8859-15 -t utf-8 --notest zzz.csv # ASCII UNIX: # ASCII DOS # ä => \344 # ä => \204 # ö => \366 # ä => \224 # ü => \374 # ü => \201 # Ä => \304 # Ä => \216 # Ö => \326 # Ö => \231 # Ü => \334 # Ü => \232 # Die deutschen Umlaute Ä = C4hex, ä = E4hex, Ö = D6hex, ö = F6hex, Ü = # DChex und ü = FChex sowie das kleine Eszett ß = DFhex sind in den zehn # Teilnormen der Latin-Gruppe jeweils auf den gleichen Positionen bzw. mit # dem gleichen Code vorhanden. Eine Kompatibilität zwischen diesen Normen # zumindest für deutschsprachige Texte ist damit gegeben. # diverse Pruefungen - software echo " convmv " | \ while read sw do [ -z "${sw}" ] && continue rpm -qV ${sw} 2>&1 1>/dev/null && echo "OK ${sw}" || zypper install -y ${sw} # [ $? -eq 0 ] || { echo "Programm benoetigt rpm -${sw}- bitte installieren ..." ; exit 1 ;} done # --------------------------------------------------------------------------- # clean4umlaut() { # Umlaute filtern # dopplete leerzeichen durch eines ersetzen sed -n ' s/\xC4/Ae/g s/\xE4/ae/g s/\xD6/Oe/g s/\xF6/oe/g s/\xDC/Ue/g s/\xFC/ue/g s/\xDF/ss/g s/[ ]\{1,\}/ /g p ' } # --------------------------------------------------------------------------- # # --------------------------------------------------------------------------- # convert2utf8() { # alle Datei normieren # Sonderfall xargs ls -1d liefert Punkt PARA="$@" [ "${PARA}" = "." -o -z "${PARA}" ] && return 0 for xkonto in ${PARA} do echo "konvertiere : convmv -f iso-8859-15 -t utf-8 --notes ${xkonto}" convmv -f iso-8859-15 -t utf-8 --notes ${xkonto} done } # --------------------------------------------------------------------------- # # --------------------------------------------------------------------------- # job4convert() { # Normierung der Dateien # konvertiere : convmv -f iso-8859-15 -t utf-8 --notes ./20170710-1234567890-umsatz.CSV # Ready! [ "${LISTE4UMSATZ}" = "" -o "${LISTE4UMSATZ}" = "." ] || convert2utf8 ${LISTE4UMSATZ} } # --------------------------------------------------------------------------- # # Normierung der Dateien # suche alle CSV-Files die es betrefen kann mit find da ls keine reg kann cd ${DVZ} # 20170710-1234567890-umsatz.CSV LISTE4UMSATZ="`find . -maxdepth 1 -type f | sed -n '/^[.\/]\{2\}[0-9]\{8\}-[0-9]\{10\}-umsatz.[cC][sS][vV]/p' | xargs ls -1d `" # convert2utf8 ${LISTE4UMSATZ} job4convert # umlaute konvertieren cat Konto_${konto}.csv | clean4umlaut > Konto_${konto}_4use.csv