Archiv verlassen und diese Seite im Standarddesign anzeigen : Textmanipulation
standard411
25.09.14, 13:27
Hallo!
Ich habe eine Vielzahl (>1000) kleiner Files, die Messwerte - getrennt durch Tabs - enthalten. Der Name der Files ist immer ein Kuerzel und dann Datum und Uhrzeit (zB Stat_2012-03-21_2248).
Wie kann ich automatisiert den Filenamen (bzw den Datums- und Uhrzeitanteil) in das File hinenschreiben; und zwar an der ersten Position. Das Ergebnis sollte also so aussehen:
2012-03-21 22:48 -> Messwert1 -> Messwert2 -> .... -> Messwert n EOF
Der Name des Files soll unverändert bleiben.
Für Tipps wäre ich sejhr dankbar.
LG, Andreas
klingt nach einem Job für find und sed.
find . -type f | while read f; do echo "$f" | sed "s/..Stat_//" | tr "_" " " | sed "s/$/ /" | tr -d "\012" > $f.tmp1; cat $f.tmp1 $f > $f.tmp2 ; mv $f.tmp2 $f; rm $f.tmp1;done
Sicherlich nicht besonders schön,nur um einen kleinen Lösungsvorschlag zu bieten.
Erklärung:
"find . -type f" : Suche ab dem aktuellen Verzeichnis rekursiv nach vorhandenen Dateien
" while read f; do": Lies die von find gelieferten Ergebnisse in die Variable "f"
echo "$f" | sed "s/..Stat_//": Ersetze zwei Zeichen(für "./" )+"Stat_" vom Inhalt von f durch nichts
tr "_" " " : ersetze restliche _ durch Leerzeichen
sed "s/$/ /": und klebe ans Ende noch ein Leerzeichen
tr -d "\012" > $f.tmp1: entferne den Zeilenumbruch und schreibe das Ergebnis in die Datei <Dateiname>.tmp1
cat $f.tmp1 $f > $f.tmp2 Schreibe das Ergebnis aus <Dateiname>.tmp1 und anschließend den Inhalt der Datei <Dateiname> in die Datei <Dateiname>.tmp2
mv $f.tmp2 $f; Benenne die temporär-Datei <Dateiname>.tmp2 in die Ursprungsdatei <Dateiname> um
rm $f.tmp1; Lösche die Temporär-Datei <Dateiname>.tmp1
done Ende der while-Schleife
Unterverzeichnisse führen zu unschönen Datumsstempeln und der Zeitstempel hat keinen ":". Darf gerne jemand ergänzen.
Ich würde empfehlen, zunächst den Umbenennungsbefehl (mv) wegzulassen.
Anschleßend mutig laufen lassen und mit STRG-C abbrechen.
Die entstandenen Dateien (.tmp2) händisch prüfen.
Die .tmp2-Dateien löschen, den "mv" wieder rein und happy sein.
Oder an einer Kopie der Daten testen.
SchraubenAnton
19.10.14, 10:11
jap, sehe ich auch so
klingt nach einem Job für find und sed.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.