Để grep 20 ký tự sau và trước khi khớp


14

Tôi có một vấn đề là tôi nhận được quá nhiều thông tin sau trận đấu cho

grep -RnisI --color=auto "pseudomonas" *

Tôi muốn chỉ nhận được 20 ký tự hoặc 10 từ sau và trước trận đấu.

Công cụ phù hợp để làm một việc như vậy là gì?


1
Tập hợp các tùy chọn của bạn hơi kỳ quặc khi phàn nàn về quá nhiều thông tin. Bạn muốn một dòng sautrước khi trận đấu của bạn được hiển thị ( -A1-B1resp.), Nhưng nó có quá nhiều không? Chính xác thì bạn muốn đầu ra của bạn cắt ở đâu?
Andreas Wiese

1
Bạn có thể đưa ra một ví dụ đầu vào và đầu ra mà bạn đang mong đợi?
Ramesh

Tôi đã thay đổi lệnh, tôi kiểm tra trong Ubuntu 13.10, cho tôi biết nếu nó hoạt động cho bạn. Tôi có tùy chọn grep và tùy chọn egrep
Eric

Câu trả lời:


23
cat file.txt | grep -o -P '.{0,20}string.{0,20}'

Điều này sẽ làm điều đó cho bạn

Cập nhật:

Nếu bạn không muốn mèo, bạn chỉ có thể sử dụng grep với tệp làm tham số:

grep -o -P '.{0,20}pseudomonas.{0,20}' FileName.html

Ngoài ra, -P sử dụng Perl Regex, mà các trang man nói là thử nghiệm, nếu bạn muốn tránh cờ đó, bạn chỉ có thể sử dụng egrep thay thế:

grep -Eo '.{0,20}yourstring.{0,20}' yourtestfile.txt

Thật là một tập tin thử nghiệm xấu xí mà bạn có;)
Ouki

Phần còn lại của tệp thực sự hữu ích, đó là một phần của một nhận xét nhiều dòng ở giữa Đề án phải được loại trừ mà không phá vỡ trình phân tích cú pháp của chúng tôi, đây chỉ là một dòng tốt để thử.
Eric

Vì là một trong những tệp của tôi, nó được đặt thành 755, nhưng tôi có thể thấy con mèo có thể không lý tưởng cho tệp HTML như thế nào, bạn có thể thử chuyển tên tệp cho grep làm tham số, xem phần chỉnh sửa của tôi.
Eric

Ý tôi là bởi 777 tệp mà bạn có 777 bản sao của các tệp khác nhau, không phải là thứ được sử dụng. Tôi chạy $$$ egrep -o '. {0,20} pseudomonas. {0,20}' * $$$. Lệnh vẫn ở đó vô cùng và không làm gì cả. Điều này sau đó một lần nữa dường như hoạt động $$$ egrep -ori '. {0,20} pseudomonas. {0,20}' * $$$. Tương tự với đệ quy và không phân biệt chữ hoa chữ thường. Tuy nhiên, nó rất chậm. Tôi nghĩ rằng nó không nên chậm như vậy. Grep đã nhanh hơn đáng kể.
Léo Léopold Hertz 준영

nếu việc định dạng không hoạt động, bạn luôn có thể đặt nó vào một tệp bằng cách thêm > results.txtvào cuối lệnh của bạn, nhưng nó sẽ không cho bạn biết bạn đã tìm thấy tệp nào.
Eric

4
pcregrep -MnirIso '(?s).{0,20}pseudomonas.{0,20}' . |
  grep --color -e '^' -e pseudomonas

Giả sử các kết quả trùng khớp và bối cảnh của chúng không trùng nhau và tên tệp không chứa pseudomonas.

Cũng lưu ý rằng các số dòng được báo cáo là những số bắt đầu của bối cảnh.

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.