Ich versuche Perl zu verwenden, um eine Datei zu bearbeiten, im Wesentlichen zum Ausschneiden und Einfügen von Inhalt in der Datei. Es scheint jedoch, dass ich die Regex falsch konstruiert habe. Ich würde mich freuen, wenn ich es aussortieren könnte. Die Substitution Befehl sollte Schnitt den Inhalt nach export PATH=$PATH
bis zu aber nicht einschließlich # THIS IS LAST
geschnitten, und fügen Sie diese Inhalte vor export PATH=$PATH
Perl Regex: Ausschneiden und Einfügen
Perl Befehl: perl -i -pe 's;(export PATH.*\n)(.*)(\# THIS IS LAST!\n);$2$1$3;' bashrc
Aktuelle bashrc:
export TERM=xterm
export PATH=$PATH
export BREW_HOME=/home/dev/.linuxbrew
export ANACONDA_HOME=/home/dev/.anaconda3
# THIS IS LAST!
Gewünschte bashrc:
Re "_cut den Inhalt nach' export PATH = $ PATH'_ "... bedeutet das wirklich" nach ** der Zeile ** 'export ..'"? (Was meine Antwort tut - es tauscht die ganze Zeile mit dem, was darauf folgt) – zdim
@zdim: Ich meine, beginnend mit der folgenden Zeile, dh 'Export BREW_HOME ...' Im Wesentlichen möchte ich alles ** zwischen ** den Zeilen schneiden 'export PATH = $ PATH' und' # DIESE LINIE IST LETZT! 'und füge diesen Inhalt ** vor **' export PATH = $ PATH' ein. Hilft das bei der Klärung der Absicht? – Ari
Ja, so habe ich es genommen. Korrigiert meine Antwort, um diese knifflige leere Zeile zu berücksichtigen, die sich nicht bewegen sollte :) – zdim