PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : sed: Inahlte in einer Datei bearbeiten



jpfote
04.05.04, 13:57
Hi,

ich habe leider ein kleines Problem mit "sed". Ich bau jetzt hier schon seit 3 Stunden herum und komme leider auf keinen grünen Zweig. Ich habe auch schon die ganzen Topic hierzu durchgelesen.

Den Ansatz habe ich soweit verstanden:
sed '|"Quelle"|"Ziel"|' Datei1 > Datei

Ich möchte jedoch einen Wert in der confic.inc.php von phpMyAdmin ändern.
Dieser hat ursprünglich die Form

"$cfg['PmaAbsoluteUri'] = ''";

und soll danach so aussehen:

$cfg['PmaAbsoluteUri'] = 'http://servername/phpMyAdmin';

Ich vermute jedoch, dass es hier Probleme mit den "/" Zeichen gibt.

Ich habe es z.B. mit diesem Befehl hier probiert:

sed '|"PmaAbsoluteUri'] = ''"|"PmaAbsoluteUri'] = 'http://server.de/phpadmin'"|' config.inc.php.1 > config.inc.php

Hat das auch schonmal jemand gehabt? Wenn ja, wie wurde es gelöst? Vielen Dank im Vorraus!

Der Gestreifte
04.05.04, 14:47
Versuch mal
sed "s|\"\"|'http://servername/phpMyAdmin'|"
Nebenbei: Stimmen die " im String "$cfg['PmaAbsoluteUri'] = ''"?

peschmae
04.05.04, 15:02
Den Ansatz habe ich soweit verstanden:
sed '|"Quelle"|"Ziel"|' Datei1 > Datei


Wenn du etwas in einer Datei ändern möchtest geht auch ein
sed '|"Quelle"|"Ziel"|' -i Datei
aber zuerst an was unkritischem bzw. einem Backup ausprobieren.

MfG Peschmä

jpfote
04.05.04, 17:10
"$cfg['PmaAbsoluteUri'] = ''"[/i]?

Ja, da hat sich der Fehlerteufel eingeschlichen. Es sind nicht: " sondern: '.

Der von Dir genannte Code funktioniert leider nicht :confused: .

Der Gestreifte
04.05.04, 17:31
Also bei mir geht er, grad probiert:
maddin@captin:maddin$ cat datei
'$cfg['PmaAbsoluteUri']' = "";
maddin@captin:maddin$ sed "s|\"\"|'http://servername/phpMyAdmin'|" datei
'$cfg['PmaAbsoluteUri']' = 'http://servername/phpMyAdmin';

L00NIX
05.05.04, 07:49
Ich möchte jedoch einen Wert in der confic.inc.php von phpMyAdmin ändern.
Dieser hat ursprünglich die Form

"$cfg['PmaAbsoluteUri'] = ''";

und soll danach so aussehen:

$cfg['PmaAbsoluteUri'] = 'http://servername/phpMyAdmin';

Ich vermute jedoch, dass es hier Probleme mit den "/" Zeichen gibt.


Ja, / ist ein Sonderzeichen, da bei sed mit / die Ausdrücke beschränkt werden.

Sieht zwar wild aus, sollte aber funktionieren:



sed -e "/^\$cfg\[\'PmaAbsoluteUri\'\]/s/\'\';$/\'http:\/\/servername\/phpMyAdmin\';/"


Wenn die doppelten Hochkommata noch verschwinden sollen (ich denke, die dienten nur zu Beschränkung?), dann noch das folgende an die obere Zeile anhängen:



-e "s/^"//" -e "s/\";/;/"