2013-05-08 10 views
6

Przekazując -o -n do grep Mogę wypisać wszystkie pasujące części wzorca w pliku i numer wiersza, w którym znaleziono każdy dopasowany.Jak wydrukować przesunięcie kolumny w obrębie każdej pasującej linii w grep

Jak mogę również wydrukować przesunięcie kolumny w tym wierszu, w którym znaleziono wzór?

+1

Dla jasności, przesunięcie kolumny oznacza przesunięcie znaku w linii/łańcuchu, prawda? – themanatuf

+0

Tak, tak, przesunięcie znaku w linii. –

+0

Vim 'set grepprg' :-) –

Odpowiedz

5

Myślę, że udało mi się naśladować to samo, co robisz z awk. Odwoływanie instrukcję AWK:

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

Oto co mój plik wygląda następująco:

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 

i oto polecenie Pobiegłem:

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

a wyjście:

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

Zrobiłem to szybko i brudno, ale mam nadzieję, że pomoże to wystarczająco, aby dostać się tam, gdzie trzeba.

+3

możesz potrzebować pętli while? w przeciwnym razie znajdziesz pierwsze dopasowanie na linię. – Kent