2013-08-13 46 views
16
1:FAILED  + *1  0  (8328832,AR,UNDECLARED) 

Đây là những gì tôi mong đợi: 8.328.832, AR, không khai báoLàm thế nào để trích xuất nội dung giữa hai dấu ngoặc vuông bằng cách sử dụng grep?

Tôi cố gắng để tìm một biểu thức regex chung cho phép thực hiện bất kỳ nội dung giữa hai dấu ngoặc ra. Nỗ lực của tôi là.

grep -o '\[(.*?)\]' test.txt > output.txt 

Nhưng nó không thể phù hợp với bất cứ điều gì = (

Cảm ơn

Trả lời

18

Vẫn sử dụng

grep -oP '\(\K[^\)]+' file 

\K phương tiện sử dụng nhìn xung quanh tính năng tiên tiến regex. More chính xác, đó là tích cực nhìn đằng sau khẳng định, bạn có thể làm điều đó như thế này quá:

grep -oP '(?<=\()[^\)]+' file 

nếu bạn thiếu tùy chọn -P, bạn có thể làm điều này với :

perl -lne '/\(\K[^\)]+/ and print $&' file 

Một cách tiếp cận đơn giản sử dụng

awk -F'[()]' '{print $2}' file 
+0

Tôi nhận được "grep: dấu ngoặc đơn không cân bằng" sau khi tôi chạy is.Is chữ P là lỗi đánh máy? @sputnick – user2574316

+0

Bạn sử dụng hệ điều hành nào và muốn sử dụng grep? –

+0

là OS X (UNIX) @sputnick – user2574316

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