SED : ersetzen eines Zeichens innerhalb eines abgestimmten Muster unter Verwendung von et-Zeichen (&)
Wenn wir mit einem Muster unter Verwendung von sed, werden die übereinstimmenden Muster gespeichert ist, in das "kaufmännische und" (&), die variable. Gibt es eine Möglichkeit, ein Zeichen ersetzen in dieser abgestimmten Muster, die durch ein kaufmännisches und selbst ?
Zum Beispiel, wenn & enthält den string "apple1", wie kann ich & um den string zu "apple2" (ich.e ersetzen Sie 1 durch 2) ?
InformationsquelleAutor der Frage user1418321 | 2012-10-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn ich richtig erraten, was Sie tun möchten, ist die Anwendung einer Weise substituiert, in einem Muster aufeinander abgestimmt sind. Sie können nicht tun, mit
&
. Sie wollen, dies zu tun, statt:Dies bedeutet, dass Sie wollen, um den Befehl auszuführen substitution nur auf den Linien, die dem Muster entspricht
/apple./
.InformationsquelleAutor der Antwort elias
Können Sie auch eine Aufnahme-Gruppe. Ein capture wird verwendet, um schnappen Sie sich einen Teil des Spiels, und speichern Sie es in eine Hilfs-variable mit dem Namen numerisch in der Reihenfolge, dass das capture wird angezeigt.
Haben wir drei Aufnahmen:
\1
enthält ein "a"\2
enthält eine Folge von "p"s (im Beispiel enthält es "pp")\3
enthält die Sequenz "le"Wir drucken jetzt den Austausch mit der übereinstimmt, die wir eingefangen:
\1\2\32
. Beachten Sie, dass wir mit 3 erfassen Sie Werte zu generieren, "apple" und dann haben wir zusätzlich eine 2. Dies nicht interpretiert werden als variable\32
da können wir nur insgesamt 9 erfasst.Hoffe, das hilft =)
InformationsquelleAutor der Antwort Janito Vaqueiro Ferreira Filho
können Sie die ersten die mit einem Muster übereinstimmen, und ändern Sie dann den text, wenn abgestimmt:
dieser code ändert
1
zu2
in allen Zeilen mitapple
InformationsquelleAutor der Antwort none
Könnte dies für Sie arbeiten (GNU-sed und Bash):
InformationsquelleAutor der Antwort potong