2

Я хочу искать в длинном предложении (более 1024 букв).

У меня есть один текстовый файл (test.txt), который имеет одно длинное предложение, например:

afdafglwqgkjrldjl;ewqje;'k;g;je;;;fdsgalsdkf;akslg;safdas.....dasfsd

Теперь я хочу проверить, какая строка содержит слово saf . Эта команда просто показывает целое предложение:

less test.txt | grep saf

Можно ли получить часть предложения или я должен использовать команду, отличную от grep?

1 ответ1

2

Не совсем то, что вы искали: покажите совпадающие линии и выделите вхождения в этих строках:

grep --color 'saf' test.txt

Варианты поиска saf и отображения до 15 символов до и после найденных случаев с использованием:

  • стандартный синтаксис регулярных выражений, впервые упомянутый @ kamil-maciorowski в его комментарии к вопросу:

    grep -o '.\{0,15\}saf.\{0,15\}' test.txt | grep saf --color
    
  • Perl-совместимый синтаксис регулярных выражений с опцией -P , если доступно:

    grep -o -P '.{0,15}saf.{0,15}' test.txt | grep --color saf
    
  • расширенный синтаксис регулярных выражений с опцией -E , если у вашего grep нет опции -P (как, например, в macOS):

    grep -o -E '.{0,15}saf.{0,15}' test.txt | grep --color saf
    

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .