Подтвердить что ты не робот

Ограниченные символы grep - одна строка

Я хочу искать слово в нескольких файлах и возвращать только одну строку за результат или ограниченное число символов (например, 40 ~ 80 символов), а не всю строку, по умолчанию.

grep -sR 'wp-content' .

file_1.sql:3309:blog/wp-content 
file_1.sql:3509:blog/wp-content 
file_2.sql:309:blog/wp-content 

В настоящее время я вижу следующее:

grep -sR 'wp-content' .

file_1.sql:3309:blog/wp-content-Progressively predominate impactful systems without resource-leveling best practices. Uniquely maximize virtual channels and inexpensive results. Uniquely procrastinate multifunctional leadership skills without visionary systems. Continually redefine prospective deliverables without.
file_1.sql:3509:blog/wp-content-Progressively predominate impactful systems without resource-leveling best practices. Uniquely maximize virtual channels and inexpensive results. Uniquely procrastinate multifunctional leadership skills without visionary systems. Continually redefine prospective deliverables without. 
file_2.sql:309:blog/wp-content-Progressively predominate impactful systems without resource-leveling best practices. Uniquely maximize virtual channels and inexpensive results. Uniquely procrastinate multifunctional leadership skills without visionary systems. Continually redefine prospective deliverables without.
4b9b3361

Ответ 1

 egrep -Rso '.{0,40}wp-content.{0,40}' *.sh

Это не будет называть Radio-Symphonie-Orchestra, но -o (nly matching).

Максимум 40 символов до и после вашего шаблона. Примечание: * e * grep.

Ответ 2

Вы можете использовать комбинацию grep и cut

Используя ваш пример, я бы использовал:

grep -sRn 'wp-content' .|cut -c -40
grep -sRn 'wp-content' .|cut -c -80

Это даст вам первые 40 или 80 символов соответственно.

изменить:

Кроме того, theres флаг в grep, который вы можете использовать:

-m NUM, --max-count=NUM
          Stop reading a file after NUM matching lines.

Это с комбинацией того, что я ранее писал:

grep -sRnm 1 'wp-content' .|cut -c -40
grep -sRnm 1 'wp-content' .|cut -c -80

Это должно дать вам первый раз, когда он появится в файле, и только первые 40 или 80 символов.

Ответ 3

Если вы измените регулярное выражение на '^.*wp-content', вы можете использовать egrep -o. Например,

egrep -sRo '^.*wp-content' .

Флаг -o делает egrep только распечатывать часть строки, которая соответствует. Таким образом, совпадение с начала строки до wp-content должно давать результат выборки в вашем первом блоке кода.