Często używam grep, aby znaleźć pliki mające określony wpis, taki jak ten:
grep -R 'MyClassName'
Dobrą rzeczą jest to, że zwraca pliki, ich zawartość i oznacza znaleziony ciąg na czerwono. Złe jest to, że mam również ogromne pliki, w których cały tekst jest zapisany w jednym dużym pojedynczym wierszu. Teraz grep wyświetla zbyt wiele wyników podczas wyszukiwania tekstu w tych dużych plikach. Czy istnieje sposób, aby ograniczyć wynik do na przykład 5 słów po lewej i po prawej stronie? A może ograniczyć wydruk do 30 liter w lewo i w prawo?
cut
, ponieważ dzieli tylko według separatora lub liczby znaków. Chociaż kiedy znajdę linię MyClassName
, może ona znajdować się w dowolnym miejscu linii i nie zawsze w tej samej pozycji. Co więcej, może występować odmiana znaków z przodu i z tyłu, co przerywa możliwość podziału według separatora.
MyClassName
zostanie znaleziona linia dodatnia , chcę uzyskać nazwę pliku i znaki x po lewej i prawej stronie. x to dowolny numer, który podam, na przykład 30. Resztę zawartości pliku należy zignorować. Ma to na celu uzyskanie kontekstu dla pasujących plików i ograniczenie przeciążenia.
cut
jeśli istnieją trzy pliki z następującego kodu: oiadfaosuoianavMyClassNameionaernaldfajd
i /(/&%%§%/(§(/MyClassName&((/$/$/(§/$&
i public class MyClassName { public static void main(String[] args) { } }
?
cut