Rückverweise in sed Rückgabe falscher Wert
Ich versuche, das ersetzen eines Ausdrucks mithilfe der sed. Die regex funktioniert in vim, aber nicht in der sed. Ich bin ersetzen die letzten Strich vor der Zahl mit einem Schrägstrich, so
/www/file-name-1
zurückkehren sollte
/www/file-name/1
Verwende ich den folgenden Befehl aus, aber es hält die Ausgabe von /www/Datei-name/0 statt
sed 's/-[0-9]/\/\0/g' input.txt
Was mache ich falsch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die surround-zwischen Klammern die Daten zu Referenz zu einem späteren Zeitpunkt, und
sed
beginnt zu zählen 1. Um wieder alle Zeichen gematcht ohne Klammern, es wird verwendet, die&
symbol.Ergibt:
Die Sie benötigen, zu erfassen, was mit der Klammer, bevor Sie zurück Referenz (die
\1
). Versuchensed -r 's|(.*)-|\1/|'
:Können Sie ein beliebiges Trennzeichen mit
sed
so/
ist nicht die beste Wahl, wenn die substitution enthält/
. Die-r
option für extended-regexp, damit die Klammern müssen nicht escaped werden.Scheint es sed unter OS X beginnt mit dem zählen der Rückverweise auf 1. Versuchen
\1
statt\0
-r
was bedeutet, dass Sie brauchen, um zu entkommen die Klammern.