Dòng lệnh Linux (xuất mẫu văn bản từ tệp)


1

Tôi đang cố gắng để xuất dòng có chứa một mẫu nhất định nằm trong các tệp được đặt tên cụ thể trong thư mục hirearchy không có cấu trúc. Mỗi tệp tôi quan tâm được đặt tên là "foo.xml". Mẫu mà tôi quan tâm trông giống như: <digit><digit>T<digit><digit> (dưới dạng biểu thức PERL \d\dT\d\d:). Tôi muốn xuất toàn bộ dòng phù hợp với mẫu này (ngay cả những thứ bổ sung trên dòng đó không khớp với mẫu đó).

Tôi đang ở đâu:

find . | grep foo.xml được thực thi trong "root" cho tôi một danh sách các tệp tôi muốn quét.

Tôi phải làm gì từ đây?

Tôi muốn làm điều này hơn ở dòng lệnh. Tôi có thể dễ dàng viết một kịch bản PERL nhưng có lẽ có một cách thực sự đơn giản để làm điều này.

Câu trả lời:


1

Bạn có thể thử một cái gì đó như:

find . -name foo.xml -exec grep REGEX '{}' \;

chỉnh sửa Trong trường hợp của bạn, REGEX là

'[0-9][0-9]T[0-9][0-9]'

do đó, tùy chọn -exec để tìm thực thi bất kỳ biểu thức tiếp theo nào, trong đó '{}' được thay thế bằng bất kỳ kết quả tìm thấy nào với lệnh find và lệnh thực thi bị chấm dứt bởi '\;'.
jmetz

1

Ngoài ra, vì bạn đã đề cập PERL, bạn có thể sử dụng tùy chọn -perl-regapi của grep:

find . -name foo.xml -exec grep -P '\d\dT\d\d' '{}' \;

Tính năng đáng yêu nếu bạn đã quen với perl regexes.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.