#!/bin/bash

# ptcsv.sh - Process Tektronix CSV
# Bash-Script zur Aufbereitung des csv-Datensatzes von Tektronix Oszilloskopen im Rahmen des FP
# Autor: Sascha Sprengard, sascha@spreng-ard.de
# Maerz 2023

# Script ausfuehren mit: 'sh ptcsv.sh'
# oder ausfuehrbar machen + ausfuehren mit
# 'chmod +x process.sh && ./process.sh'

echo Kopiere alle csv ins Arbeitsverzeichnis...
mkdir csv_files
cp $(find | grep CSV) csv_files

# Backup erstellen da der Stream Editor inLine bedient, d.h. die Datei wird jeweils mit den Aenderungen neu geschrieben.
# dies geht wesentlich eleganter, ist hier aber hilfreich fuer Debugging und Nutzung der sed Anweisungen auf der Kommandolinie direkt.
echo Erstelle Backup des Arbeitsverzeichnis...
cp csv_files -R csv_files_backup

# Wechsel ins Arbeitsverzeichnis, Start der Routine
# der Stream Editor bedient inLine, d.h. die Datei wird jeweils mit den Aenderungen neu geschrieben
echo Wende Filter an...
cd csv_files
for f in ./*                            # f ist das Target fuer jedes File im Arbeitsverzeichnis
    do
        sed '1,17d' $f -i               # den Header der Datei abschneiden 18 Zeilen
        sed 's/,//g' $f -i              # Bsp: ,,,-00.015560000000,  -0.00800,   --->   -00.015560000000  -0.00800
        sed 's/\./,/g' $f -i            # Bsp: -00.015560000000  -0.00800        --->   -00,015560000000  -0,00800
        sed 's/ /;/' $f -i              # Bsp: -00,015560000000  -0,00800        --->   -00,015560000000; -0,00800
        sed 's/ //g;/^$/d' $f -i        # Bsp: -00,015560000000; -0,00800        --->   -00,015560000000;-0,00800
    done

# Zusaetzlich Merge aller Datensaetze in eine grosse Datei
echo Erstelle Merge Datei...
for f in ./*; do cat $f >> merge.csv; done
echo "Der bearbeitete Datensatz besteht aus $(cat merge.csv | wc -l) Zeilen"
