2013-05-08 4 views
6

Passando da -o -n a grep, è possibile stampare tutte le parti corrispondenti di un motivo all'interno di un file e il numero di riga in cui è stata trovata ciascuna corrispondenza.Come stampare l'offset della colonna all'interno di ogni riga corrispondente in grep

Come è possibile stampare anche l'offset di colonna all'interno della riga in cui è stato trovato il modello?

+1

Per motivi di chiarezza, per offset di colonna si intende l'offset di carattere nella linea/stringa, giusto? – themanatuf

+0

Sì, giusto, carattere sfalsato nella linea. –

+0

Vim 'set grepprg' :-) –

risposta

5

Penso di essere riuscito a imitare la stessa cosa che stai facendo con awk. Riferimento al manuale di AWK:

http://www.staff.science.uu.nl/~oostr102/docs/nawk/nawk_92.html

Ecco cosa il mio file assomiglia:

this,is,a,test,line 
this, ,a,test,line,with,the,second,field,blank 
this, is,another,test,line,with,a,blank,in,the,second,field,but,the,field,isnt,blank 
this, ,is,another,line,with,a,blank,second,field 

Ed ecco il comando mi sono imbattuto:

awk '{regex = "test"; where = match($0, regex); print "REGEX: ",where," on line ",NR}' test 

E l'output:

REGEX: 11 on line 1 
REGEX: 10 on line 2 
REGEX: 18 on line 3 
REGEX: 0 on line 4 

L'ho fatto veloce e sporco, ma spero che sia di aiuto abbastanza per farti dove devi essere.

+3

potrebbe essere necessario un ciclo while? altrimenti si trova la prima partita per riga. – Kent