Rückverweise in sed geben falschen Wert zurück

8

Ich versuche, einen Ausdruck mit sed zu ersetzen. Die Regex funktioniert in vim, aber nicht in sed. Ich ersetze den letzten Strich vor der Zahl mit einem Schrägstrich so

%Vor%

sollte zurückgeben

%Vor%

Ich benutze den folgenden Befehl, aber es gibt stattdessen / www / Dateiname / 0 aus

%Vor%

Was mache ich falsch?

    
user2052491 03.03.2013, 17:32
quelle

3 Antworten

15

Sie müssen die Daten zwischen Klammern umschließen, um sie später zu referenzieren, und sed beginnt in 1 zu zählen. Um alle übereinstimmenden Zeichen ohne Klammern wiederherzustellen, wird das & -Symbol verwendet.

%Vor%

Das ergibt:

%Vor%     
Birei 03.03.2013, 17:49
quelle
5

Sie müssen mit Klammern beginnen, bevor Sie auf verweisen können (die ein starten) . Probieren Sie sed -r 's|(.*)-|/|' :

aus %Vor%

Sie können jedes Trennzeichen mit sed verwenden. Daher ist / nicht die beste Wahl, wenn die Ersetzung / enthält. Die -r -Option ist für erweiterte Regexp, so dass die Klammern nicht maskiert werden müssen.

    
Chris Seymour 03.03.2013 17:58
quelle
0

Es scheint, dass sed unter OS X beginnt, Rückwärtsreferenzen bei 1 zu zählen. Probieren Sie statt %code%

aus     
maljub01 03.03.2013 17:39
quelle

Tags und Links