Ich habe die folgende Zeile:
abababtestab
Ich versuche, einen sed
Ausdruck zu finden, um alle Vorkommen ab
vom Zeilenanfang zu entfernen , sodass die transformierte Zeile wie folgt lauten sollte:
testab
Ich denke, das sollte einfach sein, aber ich weiß wirklich nichts darüber sed
.
Was ich bisher habe ist:
sed 's/^ab//'
Dies entfernt jedoch nur das erste Auftreten von ab.
sed
von circa 1979 unterstützte es. Es müsste eine minderwertige Nachahmung sein, um die Gruppierung nicht zu handhaben.\n*
, aber nicht\n\{min,max\}
.\(...\)*
, oder\(...\)\{min,max\}
als nicht beabsichtigtes Ergebnis einer bestimmten Implementierung, und sie unterstützten sowohl Duplizierungs- als auch Intervallausdrücke nach Unterausdrücken und Rückverweisen.\(ab\)\1*
Version funktioniert mit dem Standard-Erbstücksed
und die\(ab\)*
Version funktioniert mit dem SuSv4-Erbstücksed
. Zumindest für meinen Build. Zugegeben, ich habe mein Erbstück gegen musl lib C gebaut, und so kann ich mir vorstellen, dass es sich dadurch möglicherweise anders verhält. Aber normalerweise, wenn eine bestimmte Funktion in einem Erbstück-SuSv4-Erbstück-Werkzeug funktioniert, aber nicht im Standard-Werkzeug, liegt dies daran, dass der Entwickler es geschafft hat.Ein anderer
sed
:Mit jeder Eingabezeile richten wir eine Beschriftung ein
:1
und führen dann am Anfang der Zeile eines
Substitutionab
durch. Wenns
ubstitution erfolgreich,t
est Befehl Zweig Etikett1
, das Werk bis kein Redo -ab
Muster erschien am Anfang der Linie, sind wir fertig.quelle
s/^ab//; t1
ist ausreichend