grep окружающие символы соответствия

Это - замысловатый способ сделать более простое:

curl -s https://raw.github.com/... | bash
8
25.08.2011, 00:24
2 ответа

Сырой способ использовать grep было бы что-то как

grep -o "....yourtext...." /path/to/the/dump.sql

Количество точек соответствует количеству символов, before/after захваченный текст. -o опция делает grep вывод только соответствия, не целые строки.

Использовать uniq на выводе помните, что необходимо отсортировать вывод сначала. Так обычно Вы сделали бы

grep . . . | sort | uniq

Если Вы интересуетесь hitcount для каждого соответствия, можно получить хорошее выходное использование

grep . . . | sort | uniq -c | sort -n
12
27.01.2020, 20:09
  • 1
    Сырая нефть? Совершенно сложный! –  user394 24.08.2011, 23:40
  • 2
    Вы могли подробно остановиться на этом немного при помощи повторного оператора: grep -o '.\{8\}yourtext.\{8\}'. Это немного меньше вызывает головокружение, чем подсчет 8 точек. –  Caleb 24.08.2011, 23:44
  • 3
    :) сырой нефтью, я имею в виду Вас, не играет с вещами как подсчет подобранных символов (использующий диапазоны) или сужающий наборы символов. –  rozcietrzewiacz 24.08.2011, 23:46
  • 4
    @Caleb и user394: Это точно, что я намеревался не предложить (и таким образом назвал мой метод "сырой нефтью"). Не нужно помнить повторную конструкцию оператора, кроме того - это еще быстрее для ввода ".....", чем ".\{6\}". –  rozcietrzewiacz 24.08.2011, 23:51

Начиная с ответа @rozcietrzewiacz, я могу расшириться до

pattern="string"
num=8
grep -on ".\{0,$num\}$pattern.\{0,$num\}" input-file
7
27.01.2020, 20:09
  • 1
    "Сырая" точечная последовательность выглядит лучше и лучше все время :) –  Caleb 25.08.2011, 00:30
  • 2
    @Caleb: обычно "сырой" ответ является хорошим началом, но иногда каждый хочет уточнить немного его. –  enzotib 25.08.2011, 08:47
  • 3
    Точечный метод последовательности не найдет левые или правые выровненные по ширине целевые шаблоны; этот метод будет. (+1) –  Peter.O 25.08.2011, 15:07
  • 4
    PS.. Я просто заметил, что это не поймает экземпляры кратных чисел шаблона на той же строке (как упомянутый OP), когда объем запаздывания 'exta' текст первого шаблона перекроет объем ведущего 'дополнительного' текста следующего шаблона –  Peter.O 25.08.2011, 15:18
  • 5
    @fred: да, -o дает только первое соответствие, когда два соответствия накладываются: echo 'aaabbbccc' | grep -o 'bb –  enzotib 25.08.2011, 15:48

Теги

Похожие вопросы