Löschen Sie alle Zeilen, die mit einem # beginnen, aus einer Datei
Alle Zeilen in einer Datei beginnen mit #
. Wie lösche ich alle Zeilen (und nur die Linien), die beginnen mit #
? Andere Linien mit den #
aber nicht am Anfang der Zeile sollte ignoriert werden.
InformationsquelleAutor der Frage Village | 2011-11-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese kann getan werden, mit einem sed Einzeiler:
Sagt, "alle Zeilen, die mit # beginnen, und löschen Sie Sie, lassen alles andere."
InformationsquelleAutor der Antwort Raymond Hettinger
Ich bin ein wenig überrascht, niemand hat vorgeschlagen, die naheliegendste Lösung:
Dies löst das problem, wie gesagt.
Aber beachten Sie, dass eine Allgemeine Konvention ist für alles, was von einem
#
am Ende einer Zeile werden als Kommentar behandelt:aber, dass behandelt, zum Beispiel, eine
#
Zeichen in einem string-literal als Beginn eines Kommentars (die möglicherweise oder möglicherweise nicht relevant für deinen Fall ist) (und es hinterlässt leere Zeilen).Einer Zeile beginnend mit beliebigen whitespace-Zeichen, gefolgt von
#
könnte auch als Kommentar behandelt:wenn whitespace nur Leerzeichen oder
wo die beiden Räume sind eigentlich ein Leerzeichen gefolgt von einem literalen tab-Zeichen (Typ "control-v-tab").
Für all diese Befehle, lassen Sie den
filename
argument zu Lesen von der Standardeingabe (z.B. als Teil einer pipe).InformationsquelleAutor der Antwort Keith Thompson
Das Gegenteil von Raymond Lösung:
"nicht alles drucken, außer für Zeilen, die NICHT mit # beginnen,"
InformationsquelleAutor der Antwort ata
Können Sie die folgenden für ein awk-Lösung -
InformationsquelleAutor der Antwort jaypal singh
Diese Antwort baut auf den früheren Antwort von Keith.
egrep -v "^[[:blank:]]*#"
sollten filter aus Kommentarzeilen.egrep -v "^[[:blank:]]*(#|$)"
sollte herausfiltern die beiden Kommentare und Leerzeilen, so ist Häufig nützlich.Informationen über
[:blank:]
und anderen Charakter-Klassen finden Sie in https://en.wikipedia.org/wiki/Regular_expression#Character_classes.InformationsquelleAutor der Antwort A-B-B
können Sie direkt Bearbeiten Sie die Datei mit
Wenn Sie wollen, auch das löschen von Kommentar-Zeilen, die beginnen mit ein paar Leerzeichen verwenden
In der Regel, Sie wollen, dass die erste Zeile in Ihrem Skript, wenn es ein sha-bang, so
sed
sollte nicht Zeilen löschen, beginnend mit#!
. es sollte auch Zeilen löschen, die nur enthalten, nur ein hash, aber kein text. setzen Sie alle zusammen:InformationsquelleAutor der Antwort rubo77
entfernen Sie den Kommentar-symbol ( # ), aber halten Sie den rest der Zeile und halten Sie dem sha-bang:
InformationsquelleAutor der Antwort Shoo Limberger
Hier ist es mit einer Schleife für alle Dateien mit irgendeiner Erweiterung:
InformationsquelleAutor der Antwort Bruno Damas