2013-01-12 3 views
5

Mi sto bloccando su questo. Voglio abbinare tutte le righe che iniziano con esattamente, diciamo, 8 spazi e quindi un doppio segno di virgolette.grep match lines con n spazi iniziali

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

Cosa sto sbagliando? Sono le linee di corrispondenza che iniziano anche con più di 8 spazi.

risposta

11

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

Se non metti ^, essa corrisponderà 8 spazi, che è vicino al vostro ".

+0

ah, naturalmente! grazie! – mark

4

Non è necessario per il tubo cat in grep solo fare egrep '^ {8}"' file il carattere ^ corrisponde l'inizio della linea in modo che il modello è ancorata.

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

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

La ripetizione quantificatore {n} se parte estesa espressione regolare impostare usa egrep oppure utilizzare l'opzione di -Egrep per evitare fuoriuscita.