2013-03-09 16 views
8

Chciałbym wydrukować zawartość pliku, ale wszystkie linie zaczynające się od # Chcę zignorować. Próbowałem niektórych rzeczy z grep i awk, ale ciągle drukowałem cały plik lub po prostu drukowałem linie zaczynające się od #. Mogłabym dać mi odpowiedni impuls, lub polecenie grep/awk, które wydrukowało anilię w pliku, który nie zaczyna się od #.Linux, Wydrukuj wszystkie linie w pliku, NIE zaczynając od

+4

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

+0

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

Odpowiedz

16

Użyj opcji grep-v negować warunek:

grep -v '^#' file 
+1

Dziękuję bardzo różnią się! – Dasoren

5

Można użyć operatora !:

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

ten neguje wynik meczu. Uwzględniłem również linie, które zaczynają się spacjami, a następnie #, ale możesz dostosować wyrażenie regularne, tak jak lubisz.

4

Można użyć grep, aby wykluczyć wszystkie linie, które zaczynają się # używając opcji

grep -v '^#' filename 

-v Jeśli jesteś fan of sed:

sed '/^#/d' filename 
+0

Dwa dobre przykłady. Ale w przykładzie sed nie potrzebujesz części ". *". – cmevoli

+0

@ cmevoli - tak, punkt zaczerpnięty, ponieważ obecność # na początku linii wystarczy dla polecenia delete :) – Tuxdude

0

to również pominąć linie z białych znaków przed #:

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

lub

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

Oto grep PCRE sposób

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