Siduction Forum

Siduction Forum => Scripting & Kernelhacking => Topic started by: bluelupo on 2010/12/17, 20:19:26

Title: [gelöst] Leerzeichen ersetzen
Post by: bluelupo on 2010/12/17, 20:19:26
Hallo zusammen,
ich sitze hier gerade vor einen kniffligen Scriptproblem.Wie kann ich aus der Crontab bei allen Zeilen die ersten fünf Leerzeichen (also die ersten 5 Felder) durch ein anderes Zeichen ersetzen, zB. den '#'.

Code: [Select]
09 20 * * * /usr/local/scripts/testscript.sh -a -x

Das Ergebnis sollte dann so ausschauen:
Code: [Select]
09#20#*#*#*#/usr/local/scripts/testscript.sh -a -x

Ein erster Ansatz war den awk zu nutzen der kennt aber nur feste Anzahl von Spalten (Feldern) und ist daher ungeeignet, da diese Variabel sein kann. Die Leeräume im sechsten Crontab-Feld (Kommando) sind variabel.

Was gäbe es für Lösungsmöglichkeiten?
Title: Leerzeichen ersetzen
Post by: ralul on 2010/12/17, 22:18:32
cat datei | sed -e's/ /#/' -e's/ /#/' -e's/ /#/' -e's/ /#/' -e's/ /#/' >neuDatei
Title: Leerzeichen ersetzen
Post by: brummer on 2010/12/17, 23:08:38
sed würde ich auch nehmen, hier sind noch nen paar vorschläge

http://sed.sourceforge.net/sed1line_de.html
Title: Leerzeichen ersetzen
Post by: bluelupo on 2010/12/18, 16:08:09
@ralul: Danke, das habe ich gesucht. Manchmal sieht man den Wald vor lauter Bäumen nicht ;-)
@brummer: Danke, für den Link
Title: [gelöst] Leerzeichen ersetzen
Post by: bluelupo on 2010/12/20, 12:55:32
Ich hab' auch noch eine Lösung gefunden.
Code: [Select]

STRING="09 20 * * * /usr/local/scripts/testscript.sh -a -x"
for TMP in 1 2 3 4 5
        do
        VERARBEITET=$(echo "${STRING/ /#}")
        STRING=$VERARBEITET
done
echo "$STRING"

09#20#*#*#*#/usr/local/scripts/testscript.sh -a -x


Gute Beispiele zur Stringverarbeitung gibt's im Advanced Bash-Scripting Guide: Chapter 10. Manipulating Variables (http://tldp.org/LDP/abs/html/string-manipulation.html)