[gelöst] Groß-Kleinschreibung im Text ändern

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
vobie
Beiträge: 195
Registriert: 29.08.2003 21:14:50

[gelöst] Groß-Kleinschreibung im Text ändern

Beitrag von vobie » 10.09.2008 17:39:56

hi,

ich habe ein kleines Problem,

in einer xml Datei habe ich einige Dateinamen (Bilder) die mal groß und mal klein geschrieben wurden.
z.B Bild1.png, bild2.png, bilD3.png usw.

nun habe ich alle Dateinamen im Ordner "Bilder" klein geschrieben.
Ich benötige ein Script das mir die Dateinamen im xml File in Kleinschrift umwandelt.

bin für jede Hilfe dankbar
mfg
vobie
Zuletzt geändert von vobie am 11.09.2008 01:28:36, insgesamt 1-mal geändert.
Es gibt keine dummen Fragen. Aber leider viele dumme Antworten.

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Groß-Kleinschreibung im Text ändern

Beitrag von Meillo » 10.09.2008 20:50:33

Steht in der XML-Datei sonst noch was drin?
Dürfen nur die Inhalte bestimmter Tags klein gemacht werden?
Poste mal ein Stück der Datei als Beispiel.

Falls du alles Großgeschriebene klein machen willst, dann verwende `tr'

Code: Alles auswählen

<infile tr '[:upper:]' '[:lower:]' >outfile
Sonst schreibst du dir am Besten ein `sed' oder `awk'-Script.
(Oder lässt es von uns schreiben ;-) )
Use ed once in a while!

vobie
Beiträge: 195
Registriert: 29.08.2003 21:14:50

Re: Groß-Kleinschreibung im Text ändern

Beitrag von vobie » 10.09.2008 23:09:52

hi,

danke für die schnelle Antwort.

Ja, inder xml Datei steht noch jede Menge anderes.

mir geht es darum nur die Bild-Dateinamen mit einem Script aus zu filtern und dann klein zu schreiben.
z.B.
Button.png --> button.png
focusNF.png --> focusnf.png
List-Icon.png --> list-icon.png
usw. usw.

das Script sollte z.b nach *.png suchen und den Namen wenn nötig klein schreiben.

würde mich über ein kleines Shellscript sehr freuen da meine Kenntnisse im programmieren sehr bescheiden sind.

mfg
vobie
Es gibt keine dummen Fragen. Aber leider viele dumme Antworten.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: Groß-Kleinschreibung im Text ändern

Beitrag von Duff » 10.09.2008 23:33:40

Ein kleiner Ausschnitt aus der xml-Datei wäre zum Testen ganz hilfreich.
Oh, yeah!

vobie
Beiträge: 195
Registriert: 29.08.2003 21:14:50

Re: Groß-Kleinschreibung im Text ändern

Beitrag von vobie » 11.09.2008 00:21:00

sorry

Code: Alles auswählen

<width>200</width>
<height>260</height>
<posx>0</posx>
<posy></posy>
<texture>folderVG.png</texture>...
<width>200</width>

<height>260</height>
<posx>16</posx>
<posy>33</posy>
<texture>Imge45.png</texture>...
nach

Code: Alles auswählen

<width>200</width>
<height>260</height>
<posx>0</posx>
<posy></posy>
<texture>foldervg.png</texture>...
<width>200</width>

<height>260</height>
<posx>16</posx>
<posy>33</posy>
<texture>imge45.png</texture>...
es geht nur um die png Dateien
vobie
Es gibt keine dummen Fragen. Aber leider viele dumme Antworten.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: Groß-Kleinschreibung im Text ändern

Beitrag von Duff » 11.09.2008 01:00:26

Dass Ganze könnte eventuell so aussehen (eine Art Einzeiler geschrieben und getestet auf solaris):

Input-File:

Code: Alles auswählen

<width>200</width>
<height>260</height>
<posx>0</posx>
<posy></posy>
<texture>folderVG.png</texture>...
<width>200</width>

<height>260</height>
<name>NameK</name>
<posx>16</posx>
<posy>33</posy>
<texture>Imge45.png</texture>...
Code:

Code: Alles auswählen

#!/usr/bin/ksh
FILE=$1

cat $FILE|while read line;do
        MATCH=$(echo $line|grep -i ".png")
        if [[ "$MATCH" != "" ]]
        then
                echo $line|tr -s '[:upper:]' '[:lower:]'
        else
                echo $line
        fi
done
Ausgabe:

Code: Alles auswählen

<width>200</width>
<height>260</height>
<posx>0</posx>
<posy></posy>
<texture>foldervg.png</texture>...
<width>200</width>

<height>260</height>
<name>NameK</name>
<posx>16</posx>
<posy>33</posy>
<texture>imge45.png</texture>...
Oh, yeah!

vobie
Beiträge: 195
Registriert: 29.08.2003 21:14:50

Re: Groß-Kleinschreibung im Text ändern

Beitrag von vobie » 11.09.2008 01:27:26

DANKE :P
perfekt
#!/usr/bin/ksh --> #!/bin/sh
und das tr -s ohne -s

Code: Alles auswählen

#!/bin/sh
FILE=$1

cat $FILE|while read line;do
        MATCH=$(echo $line|grep -i ".png")
        if [[ "$MATCH" != "" ]]
        then
                echo $line|tr '[:upper:]' '[:lower:]'
        else
                echo $line
        fi
done
vielen Dank
vobie
Es gibt keine dummen Fragen. Aber leider viele dumme Antworten.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: [gelöst] Groß-Kleinschreibung im Text ändern

Beitrag von Duff » 11.09.2008 01:32:57

Unter linux könntest du auch egrep verwenden und dann auf verschiedene Endungen wie z.B gif, jpg usw. prüfen.
Oh, yeah!

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: [gelöst] Groß-Kleinschreibung im Text ändern

Beitrag von Meillo » 11.09.2008 08:52:53

Ich denke, wenn es schon XML ist, dann sollte man nicht nach *.png suchen, sondern einfach nach den <texture> Tags --- das macht semantisch viel mehr Sinn.

Hier meine Lösung als AWK-Script:

Code: Alles auswählen

#!/usr/bin/awk -f

/<texture>/{
        line = $0;
        sub("^.*<texture>", "", line);
        sub("</texture>.*$", "", line);
        sub("<texture>.*</texture>", "<texture>" tolower(line) "</texture>");
}

{
        print;
}
Der Aufruf erfolgt dann zum Beispiel mit

Code: Alles auswählen

<input ./awk-script.awk
Einiges Problem was ich bei meinem Script sehe, ist wenn <texture> und </texture> nicht in einer Zeile stehen, was bei XML ja erlaubt ist.
Use ed once in a while!

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: [gelöst] Groß-Kleinschreibung im Text ändern

Beitrag von Duff » 11.09.2008 15:35:55

Ja, stimmt. Dies ist auch eine interessante Variante, bei der man sich aber schon ein wenig besser mit awk (vorallem mit awk-Skripten) auskennen muss.
Oh, yeah!

Antworten