2013-03-09 13 views
8

Ich möchte den Inhalt einer Datei, aber alle Zeilen beginnend mit # Ich möchte ignorieren. Ich habe einige Sachen mit grep und awk ausprobiert, aber es druckte immer die ganze Datei oder druckte nur die Zeilen, die mit # begannen. Sie könnten mir einen richtigen Push geben, oder einen grep/awk Befehl, der eine Zeile in der Datei ausgibt, die nicht mit # beginnt.Linux, Drucken Sie alle Zeilen in einer Datei, nicht mit

+4

'grep -v "^ #" file.txt' –

+0

http://unix.stackexchange.com/questions/60994/how-to-grep-lines-which-does-not-begin-with-or –

Antwort

16

Verwenden Sie die -v Möglichkeit grep die Bedingung zu negieren:

grep -v '^#' file 
+1

Vielen Dank variieren! – Dasoren

5

können Sie den ! Operator:

awk '!/^ *#/ { print; }' 

Dies ist das Ergebnis des Spiels negiert. Ich habe auch Zeilen eingefügt, die mit Leerzeichen und dann # beginnen, aber Sie können die Regex so anpassen, wie Sie möchten.

4

Sie grep alle Zeilen auszuschließen verwenden könnte, die

grep -v '^#' filename 

mit # mit der -v Option beginnen Wenn Sie ein sind Ventilator von sed:

sed '/^#/d' filename 
+0

Zwei gute Beispiele. Aber im sed-Beispiel brauchen Sie den '. *' -Teil nicht. – cmevoli

+0

@cmevoli - Ja Punkt genommen, da das Vorhandensein der # am Anfang der Zeile für den Löschbefehl ausreicht :) – Tuxdude

0

Dies würde lassen auch aus Linien mit Leerzeichen vor dem #:

awk '$1!~/^#/' file 

oder

grep -v '^[[:blank:]]*#' file 
0

Hier wird die Art und Weise grep PCRE ist,

grep -P '^(?!#)' file 
Verwandte Themen