ubuntuusers.de

Escape Sequenz bei sed Austausch berücksichtigen

Status: Ungelöst | Ubuntu-Version: Ubuntu 13.10 (Saucy Salamander)
Antworten |

Arkved

Anmeldungsdatum:
14. Oktober 2013

Beiträge: 13

Hallo Leute, es handelt sich um ein ganz "einfaches", fast peinliches Anliegen. Ich habe ein Script, das mir die Arbeit an einer unvorstellbar langen Php Datei erleichtern soll. Dieses Script ist dazu da, bei einer sehr sehr sehr langen if Abfrage einzelne Werte auszutauschen, nun soll das Shell Script mir jedoch Html Code innerhalb einer Php Datei ersetzen, was bedeutet, dass Escape Zeichen (\) schon im zu ändernden Text vorhanden sind, und mit berücksichtigt werden sollen, zur Verdeutlichung einmal mein Script:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#! /bin/sh
STRSEARCH='<font color=\"yellow\"><br>'
STRREPLACE='<font color=\"#00CED1\"><br>'

find "/home/dpp/Dokumente/AH/itmm.txt" -type f -name 'itmm.txt' -print | while read i
do
        cp "$i" "$i.tmp"
        
        if [ -f "$i.tmp" ]
        then
                #echo "s/$STRSEARCH/$STRREPLACE/g"
                sed "s/$STRSEARCH/$STRREPLACE/g" "$i" > "$i.new"
                if [ -f "$i.new" ]
                then
                        mv "$i.new" "$i"
                else
                        echo "$i.new doesn't exist"
                fi
        else
                echo "$i.tmp wasn't created"
        fi
done

Soweit so gut, nun soll in der Php Datei "<font color=\"yellow\"><br>" mit "<font color=\"#00CED1\"><br>" ersetzt werden, samt aller Sonderzeichen die enthalten sind! Ich habe schon alles versucht, einzelne Hochkommas statt Anführungszeichen, Das Escape mehrfach Escapen, einzelne Werte mit Hochkommas eingrenzen, ich weiß echt nicht mehr weiter und hoffe ihr könnt dazu beitragen, dass es wie gewünscht funktioniert, da ich andernfalls Stundenlange Arbeit für Copy & Paste benötige (die Php Datei ist bereits circa 8000 Zeilen lang und wird sich sicher noch vervierfachen, warum? Weil ich einfach nicht gerade die dynamischsten Php Lösungen parat habe, dennoch alles selber mache 😀 ) Mfg Arkved

stfischr Team-Icon

Avatar von stfischr

Anmeldungsdatum:
1. März 2007

Beiträge: 19197

Hi.

Ein einfacher Texteditor wie gedit mit suchen/ersetzen tut es nicht?

Arkved

(Themenstarter)

Anmeldungsdatum:
14. Oktober 2013

Beiträge: 13

stfischr schrieb:

Hi.

Ein einfacher Texteditor wie gedit mit suchen/ersetzen tut es nicht?

Man hat in gedit direkt eine ersetzen Funktion??? Wenn ja dann wusste ich das nicht, wenn nein; Der Quelltext ist so lange, dass ich nicht alles mit Copy & Paste per Hand ersetzen kann ...

stfischr Team-Icon

Avatar von stfischr

Anmeldungsdatum:
1. März 2007

Beiträge: 19197

Arkved schrieb:

Man hat in gedit direkt eine ersetzen Funktion???

Mir fällt gerade kein Texteditor ein, der so eine grundlegende Funktion nicht hat. Irgendwo oben im Menü unter Bearbeiten oder so ...

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Grundsätzlich geht das mit sed ganz einfach, wenn man berücksichtigt, dass das \ durch das doppelte \\ ausgedrückt wird:

track@lucid:~$ echo '"<font color=\"yellow\"><br>"'  |  sed 's/\\"yellow\\"/\\"#00CED1\\"/'
"<font color=\"#00CED1\"><br>" 

(wie bei Regulären Ausdrücken allgemein üblich) - und das funktioniert auch mit Variablen:

track@lucid:~$ from='<font color=\\"yellow\\"><br>'
track@lucid:~$ to='<font color=\\"#00CED1\\"><br>'
track@lucid:~$ echo '"<font color=\"yellow\"><br>"'  |  sed "s/$from/$to/"
"<font color=\"#00CED1\"><br>" 

Beachte bitte: Systemvariablen werden immer $GROSS geschrieben, eigene Variablen $klein, damit sie nicht aus Versehen mit (auch zukünftigen) Systemvariablen in Konflikt geraten.

LG,

track

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13212

Arkved schrieb:

Ich habe ein Script, das mir die Arbeit an einer unvorstellbar langen Php Datei erleichtern soll. Dieses Script ist dazu da, bei einer sehr sehr sehr langen if Abfrage einzelne Werte auszutauschen, nun soll das Shell Script mir jedoch Html Code innerhalb einer Php Datei ersetzen, [...]

Du hast ein Skript um Quellcode-Änderungen zu automatisieren? Wenn Du regelmäßig Werte austauschen musst, wäre es denn da nicht schlauer ein Include auf eine Datei zu machen, die nur diese Werte enthält? Wenn Du von einer "unvorstellbar langen" PHP-Datei schreibst, dann wäre es doch sowieso sinnvoll, sie aufzuteilen.

Ciao

robert

Antworten |