2009-03-13 26 views

Trả lời

5

Nếu bạn muốn nhận được chỉ là những văn bản phù hợp của một biểu thức chính quy, tôi sẽ sử dụng

grep -o 'regex' file 

Theo tinh thần của mã của bạn tôi sẽ sửa đổi nó để được

while read line; do 
    [[ $line =~ regex ]] || continue 
    # do somethinw with $line or $BASH_REMATCH, perhaps put it in an array. 
done < file 

Nếu bạn muốn khớp nhiều regex trên cùng một dòng, đây là một cách.

while read line; do 
    # do somethinw with $line 
done < <(grep -o 'regex' file) 

Tôi cho rằng regex của bạn được cho là một ví dụ đơn giản về những gì bạn thực sự làm. Các ? không hữu ích và dấu ngoặc kép của bạn phù hợp với chuỗi ký tự.

+0

Regex phức tạp hơn một chút, +? là cần thiết để được lười biếng. Mặc dù "trong khi ... thực hiện

+0

Điều gì xảy ra nếu một dòng chứa kết hợp regex hai lần? Tôi làm cách nào để xử lý? –

+0

xem câu trả lời được cập nhật –

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