我经常使用grep查找具有特定条目的文件,如下所示:
grep -R 'MyClassName'
好消息是它返回文件及其内容,并将找到的字符串标记为红色。不好的是,我还有很大的文件,整个文本都写在一个大的单行中。现在,在这些大文件中查找文本时,grep输出过多。有没有一种方法可以将输出限制为例如左右两个单词?还是将输出限制为左右30个字母?
因此,假设您要查找的模式位于位置50,但是您说只需要30个字母,那么您想做什么?忽略该行还是将其包含在输出中但修剪它?您到底要限制什么?搜索还是行本身?
—
Sergiy Kolodyazhnyy
@Rinzwind我不太了解您要使用什么实现
—
苏格拉底
cut
,因为它仅按定界符或字符数进行拆分。尽管当我找到一条线时,MyClassName
它可能在行中的任何位置,而并不总是在同一位置。此外,字符的正面和背面可能会有变化,这打破了用定界符分割字符的可能性。
@SergiyKolodyazhnyy
—
苏格拉底
MyClassName
找到一个正线时,我想作为结果获得文件名和左右两个x字符。x是我提供的任何数字,例如30。其余文件内容将被忽略。这是为了获得匹配文件的上下文并限制过载。
@Rinzwind会建议使用什么类型的自定义分隔符的
—
苏格拉底
cut
,如果有三个文件有以下输入:oiadfaosuoianavMyClassNameionaernaldfajd
和/(/&%%§%/(§(/MyClassName&((/$/$/(§/$&
和public class MyClassName { public static void main(String[] args) { } }
?
cut