Я ищу, чтобы найти и заменить в гигантском дампе базы данных, и он не делает то, что я думаю, должно произойти. Я хотел бы найти для моей целевой строки в файле, а затем увидеть окружающие 8 символов или около того (мне может потребоваться изменить это число, в зависимости от). Как я могу это сделать?
Причина, по которой я не могу взглянуть на это, заключается в том, что здесь сотни, если не тысячи матчей. Я хочу получить некоторое количество символов, окружающих строку, а затем направить ее uniq
или что-то в этом роде, чтобы понять, почему мои операции поиска и замены ведут себя неожиданно.
Также на одной линии может быть несколько совпадений!
text-processing
grep
string
user394
источник
источник
Ответы:
Грубый способ использования
grep
будет что-то вродеКоличество точек соответствует количеству символов до / после выделенного текста.
-o
Опция позволяетgrep
выводить только матчи, а не целые линии.Чтобы использовать
uniq
в выводе, помните, что вы должны сначала отсортировать вывод. Как правило, вы бы сделалиЕсли вас интересует количество просмотров для каждого матча, вы можете получить хороший результат, используя
источник
grep -o '.\{8\}yourtext.\{8\}'
. Это немного менее головокружительно, чем считать 8 точек.Начиная с ответа @rozcietrzewiacz, я могу расширить до
источник
-o
дает только первое совпадение, когда два совпадения перекрываются:echo 'aaabbbccc' | grep -o 'bb