2013-01-12 9 views
5

Utknąłem na tym. Chcę dopasować wszystkie wiersze rozpoczynające się dokładnie, powiedzmy, 8 spacji, a następnie podwójny cudzysłów.grep dopasowuje linie z n wiodącymi przestrzeniami

cat file.txt | grep '[[:space:]]\{8\}"' 

Co ja tam robię źle? To pasujące linie, które zaczynają się od więcej niż 8 spacji.

Odpowiedz

11

cat file.txt | grep '^[[:space:]]\{8\}"'

Jeśli nie umieścić ^, będzie on pasował 8 przestrzenie, które jest blisko do ".

+0

ah, oczywiście! Dziękuję Ci! – mark

4

Nie trzeba do rury cat do grep prostu zrobić egrep '^ {8}"' file postać ^ dopasowuje początek linii więc wzór jest zakotwiczony.

$ cat file 
     "match" 
     no match 
    "no match" 

$ egrep '^ {8}"' file 
     "match" 

Powtórzenie kwantyfikator {n} jeśli część rozszerzonego zestawu wyrażeń regularnych więc używać egrep lub alternatywnie skorzystać z opcji grep-E aby uniknąć ucieczki.

Powiązane problemy