22

我想在多个文件中查找一个单词,并且每个结果只返回一行,或者返回有限数量的字符(例如 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.
4

3 回答 3

21

您可以使用 grep 和 cut 的组合

使用您的示例,我将使用:

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

这将分别为您提供前 40 个或 80 个字符。

编辑:

此外,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 个字符。

于 2012-05-07T19:21:39.113 回答
18
 egrep -Rso '.{0,40}wp-content.{0,40}' *.sh

这不会调用 Radio-Symphie-Orchestra,而是-o(仅匹配)。

图案前后最多 40 个字符。注意:* e *grep。

于 2012-05-07T21:43:48.933 回答
4

如果您将正则表达式更改为'^.*wp-content'您可以使用egrep -o. 例如,

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

-o标志使 egrep 只打印出匹配的行部分。因此,从行首匹配到wp-content应该在您的第一个代码块中产生示例输出。

于 2012-05-07T18:41:14.690 回答