Also ich will nummerierte Liste von einem bestimmten Formular in ein anderes konvertieren.Wie sed verwenden, um Muster in mehreren Zeilen zu identifizieren
von dieser Form:
1. numberedlist
2. one
3. two
dieser Form:
# numberedlist
# one
# two
Ich mache weitere Änderungen an der Datei sed verwenden. daher möchte ich sed verwenden, um die erste Form immer dann zu identifizieren, wenn es passiert, und ohne Grenzen, auch wenn die nummerierte Liste mehr als 3 Elemente enthält.
Meine Gedanken über das Tun, das sind:
erste: eine Zeile mit dem Muster aufrufen (das ist eine Zahl> ein Punkt> ein Raum .... '[[:digit:]]\. '
) dem Musterraum
Sekunde: Rufen Sie die nächste Zeile des Musters Space auf und prüfen Sie, ob sie '[[:digit:]]\. '
enthält oder nicht. und mach das solange, bis die nächste Zeile den Regex nicht anspricht. Dann ersetze es mit #s. aber ja, ich weiß nicht, ob das überhaupt möglich ist. Diese
ist, was ich bin jetzt mit:
s/[[:digit:]]\. /#/
aber ja, ich weiß, es ist nicht sehr effizient. Ich bin immer noch etwas neu in der sed Welt, also jede Hilfe geschätzt. Vielen Dank.
Edit: Entschuldigung für die Verwirrung Jungs, mein Ziel ist nur den Listenindex # zu ändern. irgendwelche Zahlen begannen von 1. bis nur #. Ich möchte nur nummerierte Listen in Abschriften für die automatische Nummerierung der Engine umwandeln.
Ich kann etwas wie s/[[:digit:]]\. /# /
nicht verwenden, weil es irgendeine Stärke des Musters ändert, auch wenn es keine Liste ist.
Dies ist nicht klar genug. Wie kommen Sie von Ihrem Eingabe-Beispiel zu der Ausgabe, nach der Sie fragen? Beginnt eine nummerierte Liste immer mit '1. nummerierte Liste? Was ist mit 3 passiert? Oder sagen Sie, Sie möchten den ersten Eintrag in der Liste löschen und dann für nachfolgende Einträge den Zähler um eins dekrementieren? Und wie planen Sie, sed zu arithmetisch zu machen? Ist Ihr Ziel, wie Ihre Frage nahelegt, wirklich "wie sed zu verwenden ...", oder sind Sie mehr daran interessiert, das gewünschte Ergebnis zu erzielen? – ghoti
Ja die nummerierte Liste beginnt immer von 1 .. und immer in dieser Form digt.space. Ich muss nur die Listennummern in # umwandeln. – Mohamed
suchen Sie auch, um Leerzeilen zu entfernen (wie Ihr Beispiel zu zeigen scheint)? Könntest du genug Zeilen haben, so dass du anfängst, in 2-/3-stellige Zahlen zu kommen, zB 10., 11. ..., 100., 101. – markp