2013-05-08 30 views
6

Bằng cách chuyển -o -n đến grep, tôi có thể xuất tất cả các phần phù hợp của mẫu trong một tệp và số dòng trên mỗi kết hợp được tìm thấy.Cách in cột bù trong mỗi dòng khớp trong grep

Tôi cũng có thể in bù trừ cột trong dòng mà tại đó mẫu được tìm thấy như thế nào?

+1

Chỉ vì mục đích rõ ràng, theo cột bù đắp, bạn có nghĩa là ký tự bù vào dòng/chuỗi, phải không? – themanatuf

+0

Có quyền đó, ký tự được bù vào dòng. –

+0

Vim 'set grepprg' :-) –

Trả lời

5

Tôi nghĩ rằng tôi đã có thể bắt chước cùng một điều bạn đang làm với awk. Tham khảo hướng dẫn AWK:

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

Đây là những gì tập tin của tôi trông giống như:

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 

và đây là lệnh tôi chạy:

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

Và kết quả:

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

Tôi đã làm điều này nhanh chóng và dơ bẩn, nhưng tôi hy vọng nó giúp đủ để giúp bạn có được nơi bạn cần.

+3

bạn có thể cần một vòng lặp while? nếu không bạn chỉ tìm thấy kết quả đầu tiên trên mỗi dòng. – Kent

Các vấn đề liên quan