Tôi thường sử dụng grep để tìm các tệp có một mục nhất định như thế này:
grep -R 'MyClassName'
Điều tốt là nó trả về các tệp, nội dung của chúng và đánh dấu chuỗi tìm thấy bằng màu đỏ. Điều tệ hại là tôi cũng có các tệp lớn trong đó toàn bộ văn bản được viết thành một dòng lớn. Bây giờ grep xuất quá nhiều khi tìm văn bản trong các tệp lớn đó. Có cách nào để giới hạn đầu ra ví dụ 5 từ bên trái và bên phải không? Hoặc có thể giới hạn đầu ra ở 30 chữ cái bên trái và bên phải?
cut
, vì nó chỉ phân tách theo dấu phân cách hoặc theo số lượng ký tự. Mặc dù khi tôi tìm thấy một dòng với MyClassName
nó có thể là bất cứ nơi nào trong dòng và không phải lúc nào cũng ở cùng một vị trí. Hơn nữa, có thể có một biến thể của các ký tự ở phía trước và phía sau của nó, phá vỡ khả năng phân tách bằng dấu phân cách.
MyClassName
tìm thấy một dòng tích cực , tôi muốn nhận được kết quả là tên tệp và ký tự x ở bên trái và bên phải. x là bất kỳ số nào tôi cung cấp, ví dụ 30. Phần còn lại của nội dung tệp sẽ bị bỏ qua. Điều này là để có được một bối cảnh cho các tập tin phù hợp và hạn chế quá tải.
cut
nếu có ba file với đầu vào sau: oiadfaosuoianavMyClassNameionaernaldfajd
và /(/&%%§%/(§(/MyClassName&((/$/$/(§/$&
và public class MyClassName { public static void main(String[] args) { } }
?
cut