2016-07-12 4 views
1

ich eine CSS-Datei mit einer Kommentarzeile haben:entfernen Sie alle den Text, bis Zeichenfolge Vorkommen in einer Datei

... CSS-Code

/*!ENDBASE*/

... Code css

Ich muss alles vor /*!ENDBASE*/ (im Lieferumfang enthalten) in einer Datei entfernen und muss auch an verarmten CSS arbeiten (also nicht zeilenbasiert)

wie kann ich erreichen das mit sed oder anderen ähnlichen Bash-Befehlen?

+0

Es ist Linie basiert bis die Linie, die den Sentinel-Wert enthält! –

Antwort

1

können Sie verwenden diese sed:

sed -i.bak '1,/\/\*!ENDBASE\*\//d' file 

Dadurch werden alle Zeilen von Zeile # 1 auf den Begriff Suche löschen /*!ENDBASE*/

+0

Sie können die Zeile mit '/ *! ENDBASE * /' nicht löschen, wenn hinter dieser Zeichenfolge noch Zeichen stehen. –

+0

Ich dachte mit dem Schreiben '(inklusive)' OP wollte diese Zeile auch löschen. – anubhava

+1

brilliant, danke, und ja, ich wollte diese Zeile auch löschen, +1 für dich, obwohl ich noch nicht wählen darf –

2

können Sie versuchen, diese awk:

awk -v RS='/\*!ENDBASE\*/' 'BEGIN{ORS=RS} NR>1' file.css 

Logic : Teilen Sie die Datei mit /*!ENDBASE*/ als Trennzeichen. Drucken Sie den Datensatz # 2 weiter.

+0

Schön, aber ich bin mir nicht sicher, ob Sie ORS setzen möchten. Wenn das Wächterzeichen mehr als einmal in der Datei erscheint, sollte das vielleicht als ein Fehler behandelt werden. (z. B. "NR> 2 {print" Fehlermeldung ">"/dev/stderr "; exit 1;}' hinzufügen –

Verwandte Themen